prompt 整理中间表数据对应的存储过程 SP_SF_FYXX00_TEMP00 create or replace procedure SP_SF_FYXX00_TEMP00 ( ad_JSLX00 in number, --0费用登记 1结算 ad_BRID00 in number, --门诊病人ID as_GHID00 in number, --挂号ID as_GHH000 in char, --病人挂号号 ad_ID0000 in number default 0, --ID0000 AD_JZDH00 in number default 0, --结帐单号 AS_TSBZBH in varchar default '', --特殊病种编号 ad_CZY000 in number , ad_NEWID0 out number, --新的ID as_YHMSG0 out varchar2, --存储过程提示的错误信息 as_SYSMSG out varchar2, --系统提示的错误信息 ad_BZJSFS in number default 2, --特殊病种结算方式 0:不按病种结算1:病种+挂号费+诊查费2:病种+非病种所有费用 3:按病种结算(只结算本病种的费用) 默认值为2 as_SFXYB0 in varchar2 default '' ,--是否新医保 0:否 1:是 as_INTXML in varchar2 default '' ,--备用参数xml as_YBTYPE in varchar2 default '' --医保接口标志 -1:自费 0:福建版本 1:国家基线版 ) -- MODIFICATION HISTORY -- Person Date Comments --zhangyc 2015.04.28 create by MZSF-20150428-001 --zhangyc 2015.05.21 增加获取批次价格 by MZSF-20150521-001 --zhangyc 2015.06.19 增加高值耗材发送功能 by MZSF-20150512-001 --zhangyc 2015.06.29 增加血透析病种支付功能 by MZSF-20150630-001 --zhangyc 2015.10.29 增加函数SF_SF_YWJZMC取值 by MZSF-20151021-002 --zhangyc 2017.05.09 增加参数SF_SFQYYBXJJK控制医保单位发送功能 by MZSF-20170506-001 -- dsm 2019.04.03 门诊代煎费医保不能报销 for MZSF-20190329-001 -- dsm 2019.12.19 增加删除金额为0的项目 for MZSF-20190911-001 -- zhangyc 2020.08.04 修改通用字典参数开启无效 bm_tyzd00.zdmc00='门诊自费发送项目' by MZSF-20200804-001 --qiulf 2020.10.19 门诊医生指定自费发送的收费项目,要做自费发送 by MZSF-20201019-001 --qiulf 2020.10.28 增加参数SF_MXCSFSYBMSC控制明细上传项目是否原编号 by MZSF-20201013-003 --qiulf 2020.11.26 预结算部分及门诊费用处理(新模式)自费发送药品,也要做自费发送 MZSF-20201124-002 --qiulf 2020.12.23 增加入参ad_BZJSFS处理特殊病种结算方式 by MZSF-20201020-001 --qiulf 2021.01.26 增加通用字典'门诊自费发送项目(按医保分中心类别)' by MZSF-20201230-001 --zhangyc 2021.02.22 BM_YBSFDY.YBXMBH长度变更char(20)改为varchar2(50) by MZSF-20210222-004 --zhangyc 2021.02.23 整理报文增加bkeh83、bkeh05、bkeh06、bakxml by MZSF-20210223-003 --zhangyc 2021.03.25 LS_FPXMBH:=substrb(R_MX.FPXMMC,1,2);--医保发票编码改为LS_FPXMBH:=substrb(nvl(R_MX.FPXMBH,R_MX.FPXMMC),1,2) by MZSF-20210325-001 --linbin 2021.03.30 增加通用参数YSZJHMLY区分医生证件号码来源 0:取BM_YGBM00.YSZJHM 1:取BM_YGBM00.SFZBH0 默认0 by MZSF-20210325-002 --zhangyc 2021.04.01 由于药品先汇总完之后存在误差,定义变量LS_CFYJHJJE取处方的ZFJE00同单价*数量比较 by MZSF-20210402-004 --qiulf 2021.07.28 数量保留2位小数 by MZSF-20210719-002 --zhangyc 2021.08.17 增加参数GetType_bkeh83控制(国家标准对应编码)取值方式 1:优先取BM_YBSFDY(为空取BM_YYSFXM),0:优先取BM_YYSFXM(为空取BM_YBSFDY) by MZSF-20210817-002 --zhangyc 2021.08.25 根据参数zdmc00='医保新接口参数设置' and BH0000='YBZXLB_MXCSFSYBMSC' 控制参数SF_MXCSFSYBMSC=Y 不发送原码还是按700发送 by MZSF-20210823-003 --zhangyc 2021.08.27 定义参数LS_YBSFDY_BKEA96获取BM_YBSFDY.BKEA96限制范围类别: Y-范围内 N-范围外 by MZSF-20210830-001 --zhangyc 2021.08.30 增加入参数as_SFXYB0,as_INTXML 备用参数xml 以及 as_SFXYB0=0,(是否新医保 0:否 1:是)不取BM_YBSFDY.BKEA96 同时SF_MXCSFSYBMSC=Y无效 by MZSF-20210831-001 --zhangyc 2021.09.22 根据参数BKC007_FSYSGJBM(BM_SFCFMX_TEMP00.YSZJHM=BM_YGBM00.YBYGDM)(旧医保不处理) by MZSF-20210922-003 --zhangyc 2021.09.30 增加参数Change_bkeh83_bke045、Change_bke182_bke046转码 by MZSF-20210930-002 --pwx 2021.09.30 原先使用了“LS_Z2J000,--住院发药单位转化率”用于判断改为“LS_M2J000,--门诊发药单位转化率来判断 by MZSF-20211103-001 --zhangyc 2022.02.08 增加入参(as_YBTYPE)SF_JZB000增加写入其它国家医保字段(ybtype:医保接口类型[-1:自费 0:福建版本 1:国家基线版]) by MZSF-20220208-007 --cailongquan 2023.03.20 药量天数(YLTS00)当处方为中草药时取中药贴数(YF_MZCF00.ZYTS00),其他取 YF_MZCFMX.YYSJ00 by MZSF-20230315-003 --zhangyc 2023.07.03 处理ZFCFBZ:0或空:正常处方,1:自费处方,写入到SF_FYXX00_TEMPMX.ZFCFBZ by MZSF-20230707-002 --zhangyc 2024.01.30 ZFFSBZ自费发送标志 YJ_YW0000为空值改为取YJ_YWJJ00 by MZSF-20240131-002 --zhangyc 2024.04.08 修正 as_SFXYB0=0 and as_YBTYPE=1 判断错误 by MZSF-20240408-002 --zhangyc 2024.06.14 增加参数SF_YPCWZHFS控制药品超过最高限价处理模式(0:不处理直接报错 F:数量不变,单价=限价超过按原项目非医保)以及系统参数SF_FSYBYPFYSFRQHZ处方是否汇总 by MZSF-20240618-001 --zhangyc 2024.08.09 增加BM_SFCFMX_TEMP00.ZXKS00(执行科室)和ZXKSMC(执行科室名称)字段的写入处理,以及QYZL00、YPPL00、YPYL00国家版处理 by MZSF-20240812-002 --zhangyc 2024.11.25 处理部分药品退药更正后,负单未一起合并导致医保结算失败 ---------- ------------ ------------------------------ as LS_BRID00 BM_BRXXB0.BRID00%type; --病人ID ls_YBBRLB BM_BRXXB0.YBBRLB%TYPE; --医保病人类别 ls_YBLB00 BM_BRXXB0.YBLB00%TYPE; --医保类别 LS_BRXM00 BM_BRXXB0.BRXM00%TYPE; --医保类别 ls_FBBH00 BM_BRXXB0.FBBH00%TYPE; --病人费别 ls_SFMLXZ BM_YBBRLB.SFMLXZ%TYPE; --是否受目录限制,0:不受目录限制,1:受目录限制 ls_YBZXLB IC_YBBRLB.YBZXLB%TYPE; --医保中心类别编码 ls_FPXMMC BM_YBFPXM.XMMC00%TYPE; --发票项目名称 ls_YBXMMC BM_YBSFXM.XMMC00%TYPE; --医保收费/药品项目名称 ls_FPXMBH BM_YBFPXM.BH0000%TYPE; --医保发票项目编号 ls_YBXMBH BM_YBSFXM.XMBH00%TYPE; --医保收费/药品项目编号 ls_YBXMSX BM_YBSFXM.SFSX00%TYPE; --医保项目收费上限 ls_CBXMBH BM_YBFPXM.CBXMBH%TYPE; --超标项目编号 ls_CBXMMC BM_YBSFXM.XMMC00%TYPE; --超标项目名称 ls_CBFPBH BM_YBFPXM.BH0000%TYPE; --超标医保发票项目编号 ls_CBFPMC BM_YBFPXM.XMMC00%TYPE; --超标发票项目名称 ls_SFYBXM BM_YBSFDY.SFYBXM%TYPE; --是否医保项目 ls_YBXMLB BM_YBSFDY.YBLB00%TYPE; --医保项目类别 ls_ZWXM00 BM_YGBM00.ZWXM00%TYPE; --医生的中文姓名 ls_YSXM00 BM_YGBM00.YSZJHM%TYPE; ls_ZWXM01 BM_YGBM00.ZWXM00%TYPE; --医生的中文姓名YGBH00=0 ls_XMTEMP BM_YGBM00.ZWXM00%TYPE; --医生的中文姓名临时 ls_ID0000 BM_SFCF00_TEMP00.ID0000%TYPE; ls_TSBZID BM_SFCF00_TEMP00.ID0000%TYPE;--特殊病种需要替换的数据 ls_YGXZ00 BM_YGBM00.YGXZ00%TYPE; LS_CFMXID YF_MZCFMX.CFID00%TYPE; --处方ID号:YF_MZCFMX.CFID00或者费用明细ID:SF_FYMX00.MXID00 ls_YBZFBL SF_FYMX00.ZFBL00%TYPE; --医保自付比例 ls_XMBH00 SF_FYMX00.XMBH00%TYPE; --费用项目编号 ls_XMMC00 SF_FYMX00.XMMC00%TYPE; --费用项目名称 LS_SFXMMC SF_FYMX00.XMMC00%TYPE; --费用项目名称 ls_HJJE00 SF_FYMX00.HJJE00%TYPE; --费用合计金额 ls_ZFJE00 SF_FYMX00.ZFJE00%TYPE; --费用合计金额 ls_ZFBL00 SF_FYMX00.ZFBL00%TYPE; --自付比例 ls_XMDJ00 SF_FYMX00.XMDJ00%TYPE; --项目单价 ls_GG0000 SF_FYMX00.XMGG00%TYPE; --项目规格 ls_DW0000 SF_FYMX00.XMDW00%TYPE; --项目单位 ls_XMSL00 SF_FYMX00.XMSL00%TYPE; --项目数量 ls_SFXMID BM_YYSFXM.SFXMID%TYPE; --收费项目id XT_ZDYBYPMLXYSPBR number(2);--是否是要替换的病人 0 不是 1是 ls_SFTHML number(3);--0 不替换 1替换 ls_YBBHQZ VARCHAR2(20); --医保编码前缀 ls_YBMCFS CHAR(1); --是否按医保项目名称发送医保接口 ls_COUNT0 number(8); LS_COUNT1 number(4); ls_SYFPBH CHAR(1); ls_DJSYXJ CHAR(1); ls_SJXMDJ SF_FYMX00.XMDJ00%TYPE; --费用项目实际单价 ls_CGSXSFCF CHAR(1); --收费项目的金额超过上限是否进行拆分 ls_SF_YBCGSXSFYYXMCF char(1); --门诊收费医保超过上限是否按原项目拆分 ls_FLAG00 CHAR(1); --标志 '0'费用,'1'零散处方,'2'医嘱处方 ls_YYID00 XT_YYXX00.YYID00%TYPE; ls_FSJMJE CHAR(1); --是否向医保发送减免金额 ls_YDYBSFKYYJS char(1); --异地医保是否可以预结算 CS_YSZJHM xt_xtcs00.VALUE0%TYPE; --医生姓名是否改为医生证件号 ls_sfxmyb xt_xtcs00.VALUE0%TYPE; --是否厦门医保 ls_sfxmid_zcf000 number; --厦门医保诊查费的sfxmid ls_XMFSGS xt_xtcs00.VALUE0%TYPE; --控制项目发送格式(医保项目名称(院内项目名称)) ls_YCXCLXMXGS CHAR(1); --一次性材料项目格式是否改为 医保对应项目+(医院收费项目) ls_JSXM00 BM_YYSFXM.JSXM00%type; E_YJJXZ exception; ls_SFFSYYFMMC varchar2(10); ls_SFYP00 BM_YBSFDY.SFYP00%type; SF_TSBZXZCFXM XT_XTCS00.VALUE0%TYPE; --是否对特殊病种外的目录进行限制 Y限制 N不限制 默认为N lv_yszjhm varchar2(50); LS_YPTS00 number(6);--用药天数 LS_YPPL00 varchar2(6);--频率代码 LS_YPYL00 varchar2(20);--剂量+单位 LS_PCMC00 varchar2(100);--频次名称 LS_YPYFMC varchar2(100);--药品用法名称 LS_JLDW00 varchar2(100);--剂量单位 LS_CFDW00 varchar2(100);--处方单位 LS_YYSJ00 number(12);--用药时间数 LS_ZYTS00 number(12);--中药贴数 LS_CSL000 number(14,4);--次数量(剂量单位) LS_YPDLBH varchar2(10);--药品大类编号 '0'西药,'2'草药'1'成药 LS_JXBH00 varchar2(100);--剂型编码 LS_YSZJHM varchar2(30);--医生证件编码 ls_MZQDSFNSBL varchar2(10); ls_SFXNHFSQZF XT_XTCS00.VALUE0%TYPE; LS_YYFPBH BM_FPXM00.BH0000%TYPE; --院内发票编码 LS_YYFPMC BM_FPXM00.XMMC00%TYPE; --院内发票名称 ls_ZFFSBZ YF_MZCFMX.ZFFSBZ%type; --自费发送标识 LS_GHID00 SF_FYXX00_TEMPMX.GHID00%type;--挂号id LS_GHH000 SF_FYXX00_TEMPMX.GHH000%type;--挂号号 LS_CFLSH0 SF_FYXX00_TEMPMX.CFLSH0%type;--处方流水号 LS_YJDJH0 SF_FYXX00_TEMPMX.YJDJH0%type;--医技单据号 LS_CFID00 SF_FYXX00_TEMPMX.CFID00%type;--处方ID或YJ_YWJJ00.ID0000或费用明细ID LS_SFDJH0 SF_FYXX00_TEMPMX.DJH000%type;--收费单据号 LS_CXDJH0 SF_FYXX00_TEMPMX.CXDJH0%type;--冲销单据号 LS_JZDH00 SF_FYXX00_TEMPMX.JZDH00%type;--结账单号 LS_MXID00 SF_FYXX00_TEMPMX.MXID00%type; --明细ID LS_CFHAO0 SF_FYXX00_TEMPMX.CFHAO0%type; --'医院唯一处方号' LS_JX0000 SF_FYXX00_TEMPMX.JX0000%type; --'剂型'=BM_YPJX00.YBFSBM(BM_YD0000.JXBH00) LS_DCYYDW SF_FYXX00_TEMPMX.DCYYDW%type; --'单次用药单位' LS_QYZL00 SF_FYXX00_TEMPMX.QYZL00%type; --'取药总量'; LS_QYZLDW SF_FYXX00_TEMPMX.QYZLDW%type; --'取药总量单位' LS_YLTS00 SF_FYXX00_TEMPMX.YLTS00%type; --'药量天数' LS_GYTJ00 SF_FYXX00_TEMPMX.GYTJ00%type; --'给药途径' =BM_YPYF00.YBFSBM LS_YPCZFL bm_yd0000.YPCZFL%type; --0:普通药品 1:颗粒药 2:全成分,3:包药机药品 LS_CZRQ00 char(8); LS_CZSJ00 char(8); LS_DJH000 SF_BRFY00.DJH000%type; LS_XJZF00 number(12,4);--自费金额 LS_JZJE00 number(12,4);--记账金额 LS_GFJE00 number(12,4);--公费金额 LS_ZHZYE0 number(12,4);--账户总余额 LS_YJZJE0 number(12,4);--已记账金额 LS_FPBH00 varchar2(2); LS_FPMC00 varchar2(40); V_DLSJGL varchar2(100); --多零售价管理 v_YFBMBH YF_MZCF00.YFBMBH%TYPE; V_SFKSLY YF_MZCF00.SFKSLY%TYPE; --是否科室领药 v_SFXJJZ YF_MZCF00.SFXJJZ%TYPE; --是否现金记账 V_DQLSDJ YF_YPKCXX.LSDJ00%TYPE; --当前零售价 V_DQGJDJ YF_YPKCXX.GJDJ00%TYPE; --当前购进单据 V_ZHL000 YF_MZCFMX.ZHL000%TYPE; V_K2J000 BM_YD0000.K2J000%TYPE; V_YPZSL0 number(12,4); v_XMDJ00 number(12,4); V_XMJE00 number(12,4); LS_HCDBBM Varchar2(40);--耗材打包编码 LS_GZHCID number(10);--高值耗材ID=BM_GZHCMX.GZHCID LS_HCDBXM char(1); --是否耗材打包项目 1:是 0:否 LS_SFFSHC char(1); --是否发送高值耗材 1:发送 0:不发送 LS_HCJKQY char(1); --高值耗材接口启用 Y:是 N:否 LS_YBXJQY varchar2(100);--门诊或住院系统是否启用医保限价接口 Y:启用 N:不启用 默认值N:不启用 LS_K2J000 BM_YD0000.K2J000%type;--库存单位转化率 LS_M2J000 BM_YD0000.M2J000%type;--门诊发药单位转化率 LS_Z2J000 BM_YD0000.Z2J000%type;--住院发药单位转化率 LS_YBDW00 BM_YD0000.YBDW00%type;--医保单位 LS_YB2J00 BM_YD0000.YB2J00%type;--医保转换率 LS_YBDDW0 BM_YBSFXM.XMDW00%type;--医保项目单位(大单位) LS_YBXDW0 BM_YBSFXM.XMDW01%type;--医保项目单位(小单位) LS_YBJSDJ BM_YBSFXM.YBJSDJ%type;--医保结算单价 LS_YBZGDJ BM_YBSFXM.YBZGDJ%type;--医保最高单价 LS_YBJSDJ1 BM_YBSFXM.YBJSDJ1%type;--医保结算单价 LS_YBZGDJ1 BM_YBSFXM.YBZGDJ1%type;--医保最高单价 LS_YPNM00 YF_MZCFMX.YPNM00%type;--药品内码 LS_FPXMMC_TEMP varchar2(40); LS_MsgStr varchar2(100); SF_MXCSFSYBMSC XT_XTCS00.VALUE0%type; LS_BKEH83 SF_YBFSMX.BKEH83%type;--国家标准对应编码 LS_BKEH05 SF_YBFSMX.BKEH05%type;--医保备用1 LS_BKEH06 SF_YBFSMX.BKEH06%type;--医保备用2 LS_BAKXML SF_YBFSMX.BAKXML%type;--HIS备用字段(xml格式)后续扩展 LS_ZJHMLY varchar2(10);--医生证件号码来源 0:取BM_YGBM00.YSZJHM 1:取BM_YGBM00.SFZBH0 默认0 LS_FYRQ00 varchar2(8); --费用日期 LS_YSYGBH number(5); --医生员工编码 LS_GetType_bkeh83 varchar2(10);--新医保接口bkeh83(国家标准对应编码)取值方式 1:优先取BM_YBSFDY(为空取BM_YYSFXM),0:优先取BM_YYSFXM(为空取BM_YBSFDY) LS_YYSFXM_BKEH83 BM_YYSFXM.BKEH83%type;--医院收费项目:医保国家标准编码 LS_YBSFDY_BKEH83 BM_YBSFDY.BKEH83%type;--医院收费对应:医保国家标准编码 LS_YBSFXM_BKEH83 BM_YBSFXM.BKEH83%type;--医保收费项目:医保国家标准编码 LS_YBSFDY_MZZYBZ BM_YBSFDY.MZZYBZ%type;--医院收费对应:门诊住院标志 0门诊,1住院,2门诊住院都可用 LS_YBZXLB_MXCSFSYBMSC varchar2(100);--新医保医保项目70开头项目编码(系统参数:SF_MXCSFSYBMSC、ZY_MXCSFSYBMSC=Y)不转成原码费别多个用|隔开 LS_YBSFDY_BKEA96 varchar2(1);--限制范围类别: Y-范围内 N-范围外 LS_BKC007_FSYSGJBM varchar2(10);--新医保接口明细上传bkc007节点是否开启发送医师国家编码(=BM_YGBM00.YBYGDM),=0原来模式[0:否,1:门诊,2:住院,3:门诊住院] 默认0 LS_YBYGDM BM_YGBM00.YBYGDM%type;--医保医师代码/医保护士代码 LS_Change_bkeh83_bke045 varchar2(10);--bkeh83(国家编码C码)是否转化为bke045(医保结算编码) LS_Change_bke182_bke046 varchar2(10);--bke182(院内项目名称)是否转化为bke046(医保项目名称) LS_COU number(5); LS_COU2 number(5); LS_ZFCFBZ SF_FYXX00_TEMPMX.ZFCFBZ%type;--自费处方标志:0或空:正常处方,1:自费处方 LS_OPEN_ZFCFBZ varchar2(1); --是否启用按自费处方标志分开结算 0:不启用 1:启用 LS_SFXYB0 varchar2(10);--是否新医保 0:否 1:是 LS_CFYJXMDJ SF_FYMX00.XMDJ00%type;--处方医技原项目单价 LS_CFYJXMSL SF_FYMX00.XMSL00%TYPE;--处方医技原项目数量 LS_CFYJHJJE YF_MZCFMX.ZFJE00%type;--处方医技合计金额 LS_FSYBYPFYSFRQHZ varchar2(100);--门诊医保数据整理(SP_SF_YBJK00_FJ0000)药品费用是否发送明细 0:先汇总发送 1:按明细发送 默认:1 LS_YPCWZHFS varchar2(100);--门诊收费药品最高限价转化方式:0:不处理直接报错 F:数量不变,单价=限价超过按原项目非医保 LS_YPXJCFBZ varchar2(10); --药品最高限价拆分标识 0:不拆分 1:拆分(数量不变,单价=最高限价 超过独立收费生成一条) 2:拆分(数量不变,单价=最高限价 超过原药品项目非医保) LS_YPXJXMBH number(10) ;--限价拆分项目编号 LS_YPXJFPBH BM_YBFPXM.BH0000%type; --药品最高限价医保发票编号 LS_YPXJFPMC BM_YBFPXM.XMMC00%type; --药品最高限价医保发票名称 LS_YPXJSFYB BM_YBSFDY.SFYBXM%type; --药品最高限价是否医保项目 LS_YPXJYBMC BM_YBSFXM.XMMC00%type; --药品最高限价医保项目名称 LS_YPXJYBBH BM_YBSFXM.XMBH00%type; --药品最高限价医保项目编号 LS_YPXJYBDW BM_YBSFXM.XMDW00%type; --药品最高限价医保项目单位 LS_YPXJXMDJ SF_FYMX00.XMDJ00%type; --药品最高限价项目单价 LS_YPXJXMSL SF_FYMX00.XMSL00%type; --药品最高限价项目数量 LS_YPXJXMJE SF_FYMX00.HJJE00%type; --药品最高限价费用合计金额 LS_HJJETEMP SF_FYMX00.HJJE00%type; --项目金额临时变量 Pro_Out_ZXZT00 number(12);--[出参]:执行状态 0:失败 1:成功 Pro_Out_ERRMSG varchar2(400);--[出参]:错误信息 Pro_Out_OUTXML varchar2(1000);--[出参]:备用出参xml格式输出 LS_KDKS00 SF_FYXX00_TEMPMX.KDKS00%type;--开单科室编码 LS_KDKSMC SF_FYXX00_TEMPMX.KDKSMC%type;--开单科室名称 LS_KDYS00 SF_FYXX00_TEMPMX.KDYS00%type;--开单医生编码 LS_KDYSXM SF_FYXX00_TEMPMX.KDYSXM%type;--开单医生姓名 LS_ZXKS00 SF_FYXX00_TEMPMX.ZXKS00%type;--执行科室编码 LS_ZXKSMC SF_FYXX00_TEMPMX.KDKSMC%type;--执行科室名称 LS_ZXYS00 SF_FYXX00_TEMPMX.KDYS00%type;--执行医生编码 LS_ZXYSXM SF_FYXX00_TEMPMX.KDYSXM%type;--执行医生姓名 LS_YPPLMC SF_FYXX00_TEMPMX.YPPLMC%type;--药品频率名称 LS_YZH000 SF_FYXX00_TEMPMX.YZH000%type;--医嘱号 cursor CUR_SF_FYMX00_MXID00 IS select '0' as FLAG00,a.MXID00 as CFMXID,decode(a.JMBZ00,'4',a.ZFJE00,a.ZFJE00-a.JMJE00) ZFJE00,substrb(c.XMMC00,1,50) XMMC00, nvl(c.GG0000,'无')GG0000,nvl(c.DW0000,'无')DW0000,a.XMBH00,decode(trim(CS_YSZJHM),'Y',decode(e.YSZJHM,null,e.ZWXM00,e.YSZJHM),e.ZWXM00),--e.ZWXM00, decode(a.JMBZ00,'4',decode(ls_FSJMJE,'Y',(a.HJJE00+a.JMJE00),(a.HJJE00-a.JMJE00)),(a.HJJE00-a.JMJE00))/decode(a.XMSL00,0,1,a.XMSL00) XMDJ00,a.XMSL00, decode(a.JMBZ00,'4',decode(ls_FSJMJE,'Y',(a.HJJE00+a.JMJE00),(a.HJJE00-a.JMJE00)),(a.HJJE00-a.JMJE00)) HJJE00,a.ZFBL00, 0 as YPTS00,--用药天数 '' as PCMC00,--频次名称 a.XMSL00 as CSL000, --剂量 c.DW0000 as JLDW00,--剂量单位 decode(LS_ZJHMLY,'1',e.SFZBH0,e.YSZJHM), --医生证件编号 nvl(a.ZFFSBZ,'N') ZFFSBZ, to_char(decode(D.CXDJH0,0,D.DJH000,null,D.DJH000,D.CXDJH0)) as CFHAO0, --医院唯一处方号 '' as JX0000, --剂型=BM_YPJX00.YBFSBM '' as DCYYDW, --单次用药单位 '' as QYZL00, --取药总量; '' as QYZLDW, --取药总量单位 '' as YLTS00, --药量天数 '' as GYTJ00, --给药途径 =BM_YPYF00.YBFSBM '' as YPCZFL, --0:普通药品 1:颗粒药 2:全成分,3:包药机药品 D.DJH000, --单据号 A.ZFJE00, --自费金额 A.JZJE00, --记账金额 A.GFJE00, --公费金额 B.BH0000 AS FPBH00, B.XMMC00 AS FPMC00, '0' AS YPDLBH, null as K2J000,--库存单位转化率 null as M2J000,--门诊发药单位转化率 null as Z2J000,--住院发药单位转化率 null as YBDW00,--医保单位 null as YB2J00, --医保转换率 A.CZRQ00 as FYRQ00, --费用日期 e.YGBH00 as YSGZH0, --员工编码 decode(a.JMBZ00,'4',decode(ls_FSJMJE,'Y',(a.HJJE00+a.JMJE00),(a.HJJE00-a.JMJE00)),(a.HJJE00-a.JMJE00)) AS CFYJHJJE,--处方医技合计金额 nvl(D.ZFCFBZ,'0') as ZFCFBZ ,--自费处方标志:0或空:正常处方,1:自费处方 a.KDKS00 as KDKS00 ,--开单科室编号 a.KDYS00 as KDYS00 ,--开单医生编号 a.ZXKS00 as ZXKS00 ,--执行科室编号 a.ZXYS00 as ZXYS00 ,--执行医生编号 to_char(a.MXID00) as YZH000 ,--医嘱号=费用明细id或处方id '' as YPPLMC --药品频率名称 from SF_FYMX00 A,BM_FPXM00 B,BM_YYSFXM C,SF_BRFY00 D,BM_YGBM00 E where D.BRID00=LS_BRID00 and JZDH00=LS_JZDH00 and d.MZH000= LS_GHH000 and d.MZID00= LS_GHID00 and a.XMBH00 = C.SFXMID and C.MZFPID = B.FPXMID and D.DJH000=a.DJH000 and a.KDYS00=e.YGBH00 and B.SFYLXM='Y' and a.XMBH00<9999999900 --将西药,草药,成药,材料的去掉(以及将专门减免的也去掉9999999901~9999999990 jlg) and a.JMBZ00<>'2' --如果JMBZ00='4'(事前减免),则发送医保时要把这部分减免的金额也发送给医保 for MZSF-20070119-006 --1:病种+挂号费+诊查费 and (ad_BZJSFS <> 1 or AS_TSBZBH is null or B.BH0000 in ('04','06') or exists ( select 1 from VW_SF_YBTZBZ e where e.brid00=d.brid00 and e.djh000=decode(nvl(d.CXDJH0,0),0,d.djh000,D.CXDJH0) and e.tsbzbh=AS_TSBZBH) ) union all select '1' as FLAG00, max(a.CFID00) as CFMXID, sum(round(a.LSDJ00*a.YPZSL0*100)/100) as ZFJE00, substrb(e.YPMC00,1,50) as YPMC00, max(nvl(e.YPGG00,'无'))as YPGG00, max(nvl(a.CFDW00,'无'))as CFDW00, a.YPNM00, max(decode(trim(CS_YSZJHM),'Y',decode(f.YSZJHM,null,c.YSXM00,f.YSZJHM),c.YSXM00)) as ZWXM00, decode(ls_MZQDSFNSBL,'Y',1/decode(E.NSBL00,0,1,E.NSBL00),1)*a.LSDJ00 as XMDJ00, sum(decode(ls_MZQDSFNSBL,'Y',decode(E.NSBL00,0,1,E.NSBL00),1)*a.YPZSL0) as XMSL00, sum(round(a.LSDJ00*a.YPZSL0*100)/100) YPHJJE, max(a.ZFBL00) as ZFBL00, max(nvl(a.YYSJ00,1)) as YPTS00,--用药天数 --a.PCMC00 as PCMC00,--频次名称 max(decode(a.ypdlbh,'2','bid',nvl(a.PCMC00,'qd'))) as PCMC00,--by MZSF-20140813-002 max(nvl(a.CSL000,a.YPZSL0)) as CSL000, --剂量 max(a.JLDW00) as JLDW00,--剂量单位 max(decode(LS_ZJHMLY,'1',f.SFZBH0,f.YSZJHM)) as YSZJHM, --医生证件编号 nvl(a.ZFFSBZ,'N') as ZFFSBZ, decode(trim(C.BCCFH0),'0',trim(C.CFLSH0),null,trim(C.CFLSH0),trim(C.BCCFH0)) as CFHAO0, --医院唯一处方号 max(substrb(trim(e.JXBH00),1,50)) as JX0000, --剂型=BM_YPJX00.YBFSBM max(substrb(trim(e.jldw00),1,50)) as DCYYDW, --单次用药单位 max(trim(to_char(A.YPZSL0*a.zhl000,'99990.99'))) as QYZL00, --取药总量; max(substrb(trim(e.jldw00),1,50)) as QYZLDW, --取药总量单位 max(Trim(to_char(nvl(decode(C.YPDLBH, '2', C.ZYTS00, A.YYSJ00), 1),'99990.99'))) as YLTS00, --药量天数 max(substrb(trim(a.YPYFMC),1,50)) as GYTJ00, --给药途径 =BM_YPYF00.YBFSBM e.YPCZFL as YPCZFL, --0:普通药品 1:颗粒药 2:全成分,3:包药机药品 --D.DJH000, max(decode(nvl(d.CXDJH0,0),0,d.DJH000,d.CXDJH0)) as DJH000, sum(A.ZFJE00) as ZFJE00, --自费金额 sum(A.JZJE00) as JZJE00, --记账金额 sum(A.GFJE00) as GFJE00, --公费金额 '' as FPBH00, '' as FPMC00, C.YPDLBH, e.K2J000 as K2J000,--库存单位转化率 e.M2J000 as M2J000,--门诊发药单位转化率 e.Z2J000 as Z2J000,--住院发药单位转化率 e.YBDW00 as YBDW00,--医保单位 e.YB2J00 as YB2J00, --医保转换率 max(C.SRRQ00) as FYRQ00, --费用日期 max(F.YGBH00) as YSGZH0, --员工编码 sum(A.ZFJE00) as CFYJHJJE ,--处方医技合计金额 nvl(C.ZFCFBZ,'0') as ZFCFBZ, --自费处方标志:0或空:正常处方,1:自费处方 --substrb(SF_SF_GET_ZFCFBZ(0,C.BRID00,C.GHID00,C.DJH000,C.CFLSH0,C.BCCFH0,C.ZFCFBZ,C.FJFDJH,null),1,1) as ZFCFBZ ,--自费处方标志:0:正常处方 1:自费处方 max(c.GHKS00) as KDKS00 ,--开单科室编号 max(c.YSGZH0) as KDYS00 ,--开单医生编号 max(c.YFBMBH) as ZXKS00 ,--执行科室编号 0 as ZXYS00 ,--执行医生编号 max(to_char(a.CFID00)) as YZH000 ,--医嘱号=费用明细id或处方id max(a.PCMC00) as YPPLMC --药品频率名称 from YF_MZCFMX A,YF_MZCF00 c,SF_BRFY00 d,BM_YD0000 e,bm_ygbm00 f where d.BRID00=LS_BRID00 and d.JZDH00=LS_JZDH00 and d.MZH000= LS_GHH000 and d.MZID00= LS_GHID00 and a.CFLSH0=c.CFLSH0 and c.DJH000=d.DJH000 and a.YPNM00=e.YPNM00 and a.SFZBY0='N' --是否自备药 and c.ysgzh0=f.ygbh00 group by e.YPMC00,a.YPNM00,decode(ls_MZQDSFNSBL,'Y',1/decode(E.NSBL00,0,1,E.NSBL00),1)*a.LSDJ00, nvl(a.ZFFSBZ,'N'),e.YPCZFL,C.YPDLBH,e.K2J000,e.M2J000,e.Z2J000, e.YBDW00,e.YB2J00,nvl(C.ZFCFBZ,'0'), decode(trim(C.BCCFH0),'0',trim(C.CFLSH0),null,trim(C.CFLSH0),trim(C.BCCFH0)) ; --修改原始单据对照 cursor FYTEMPMX is select * from SF_FYXX00_TEMPMX where ID0000=ad_ID0000 and BRID00=LS_BRID00 and ad_ID0000>0 and SFXMID>0 and DJH000=0 and FBBH00=3 order by XMFL00,SFXMID; begin LS_GHID00:=as_GHID00;--挂号id LS_GHH000:=as_GHH000;--挂号号 LS_JZDH00:=ad_JZDH00;--结账单号 LS_CZRQ00:=to_char(sysdate,'YYYYMMDD'); LS_CZSJ00:=to_char(sysdate,'HH24:MI:SS'); LS_HCDBBM:=null; LS_GZHCID:=0; LS_SFFSHC:='1'; LS_HCDBXM:='0'; LS_COUNT0:=0; LS_COUNT1:=0; LS_MsgStr:=''; LS_BKEH83:=null;--国家标准对应编码 LS_BKEH05:=null;--医保备用1 LS_BKEH06:=null;--医保备用2 LS_BAKXML:=null;--HIS备用字段(xml格式)后续扩展 LS_YYSFXM_BKEH83:=null;--医院收费项目:医保国家标准编码 LS_YBSFDY_BKEH83:=null;--医院收费对应:医保国家标准编码 LS_YBSFXM_BKEH83:=null;--医保收费项目:医保国家标准编码 LS_Change_bkeh83_bke045:='00';--bkeh83(国家编码C码)是否转化为bke045(医保结算编码) LS_Change_bke182_bke046:='00';--bke182(院内项目名称)是否转化为bke046(医保项目名称) LS_OPEN_ZFCFBZ :='0';--是否启用按自费处方标志分开结算 0:不启用 1:启用 LS_SFXYB0:=substrb(as_SFXYB0,1,10);--是否新医保 0:否 1:是 if LS_SFXYB0='0' and as_YBTYPE in ('1') then LS_SFXYB0:='1'; end if; LS_YPCWZHFS :='0';--门诊收费药品最高限价转化方式:0:不处理直接报错 F:数量不变,单价=限价超过按原项目非医保 LS_YPXJCFBZ :='0';--药品最高限价拆分标识 0:不拆分 1:拆分(数量不变,单价=最高限价 超过独立收费生成一条) 2:拆分(数量不变,单价=最高限价 超过原药品项目非医保) --获取医院ID begin select SF_SF_GETYYID00() YYID00 into ls_YYID00 from dual; exception when OTHERS then ls_YYID00:='0'; end; --获取基本信息以及医保中心类别 begin select A.BRID00,A.YBBRLB,A.FBBH00,A.YBLB00,A.BRXM00,b.YBZXLB into LS_BRID00,LS_YBBRLB,LS_FBBH00,LS_YBLB00,LS_BRXM00,ls_YBZXLB from BM_BRXXB0 A,IC_YBBRLB B where A.FBBH00=B.FBBH00 and A.YBLB00=B.YBLB00 and A.BRID00 = ad_BRID00; exception when others then ls_YBBRLB:='0'; as_YHMSG0:='查下基本信息异常!select A.* from BM_BRXXB0 A,IC_YBBRLB B where A.FBBH00=B.FBBH00 and A.YBLB00=B.YBLB00 and A.BRID00 ='||ad_BRID00; as_SYSMSG:=as_YHMSG0; rollback; return; end; --账户总余额 LS_ZHZYE0:=SF_SF_GETBRZHYE(0,LS_BRID00,1,1); --新医保明细上传项目是否按原编码上传,Y:是,N:否 (70或90开头),默认N begin select trim(VALUE0) into SF_MXCSFSYBMSC from XT_XTCS00 where name00='SF_MXCSFSYBMSC'; exception when others then SF_MXCSFSYBMSC:='N'; end; --SF_GZHCYBFS 门诊收费医保病人结算是否高值耗材打包项目发送接口 0:都不启用 1:都启用 2:医保启用(农合除外) 3:农合启用(医保除外) 4:省医保启用 5:市医保启用 LS_HCJKQY:=substrb(SF_SF_XTCS00(LS_BRID00,'SF_GZHCYBFS'),1,1); --是否多零售价管理 Y:是 N:否 begin select Trim(VALUE0) into V_DLSJGL from XT_XTCS00 where name00='YF_SFDLSJGL'; exception when others then V_DLSJGL:='N'; end; --是否向医保发送减免金额(默认Y) begin select upper(trim(VALUE0)) into LS_FSJMJE from XT_XTCS00 where name00 = 'SF_SFXYBFSJMJE'; exception when others then ls_FSJMJE:='Y'; end; --超标项目是否以院内发票名称进行发送。Y启用、N 不启用。默认为N begin select trim(VALUE0) into LS_SFFSYYFMMC from XT_XTCS00 where NAME00='SF_CBXMSFYYYFPMCFS'; exception when others then ls_SFFSYYFMMC:='N'; end; --是否根据特殊病种限制的目录结算时候将目录外药品按自费药品发送,Y:是 N:否 默认为N begin select upper(trim(VALUE0)) into SF_TSBZXZCFXM from XT_XTCS00 where NAME00 = 'SF_TSBZXZCFXM'; exception when others then SF_TSBZXZCFXM:='N'; end; --病种编号为 居民体检 或职工体检那么不处理 if (as_tsbzbh IS NOT NULL) AND ((as_tsbzbh='000003000006') OR (as_tsbzbh='000003000007')) then SF_TSBZXZCFXM:='N'; end if; --异地医保是否可以预结算,默认为Y begin select upper(trim(VALUE0)) into ls_YDYBSFKYYJS from XT_XTCS00 where NAME00 = 'SF_YDYBSFKYYJS'; exception when others then ls_YDYBSFKYYJS:='Y'; end; --清单打印、汇总清单打印、传送给医保中心的信息的药品剂量是否不按浓缩比例转化数量,Y为是,N为否,默认为N begin select upper(trim(VALUE0)) into ls_MZQDSFNSBL from XT_XTCS00 where NAME00 = 'SF_MZQDSFANSBL'; exception when others then ls_MZQDSFNSBL:='N'; end; ------------------------------------判断是否为新农合病人begin--------------------------------- begin select upper(trim(VALUE0)) into ls_SFXNHFSQZF from XT_XTCS00 where NAME00='SF_MZNHBRYJXMSFFSFYB'; exception when others then ls_SFXNHFSQZF:='N'; end; if trim(ls_SFXNHFSQZF)='Y' then begin select decode(SFXNH0,'1','Y','N') into ls_SFXNHFSQZF from ic_ybbrlb where (FBBH00,YBLB00)=(select FBBH00,YBLB00 from BM_BRXXB0 where brid00=LS_BRID00); exception when others then ls_SFXNHFSQZF:='N'; end; end if; ------------------------------------判断是否为新农合病人end------------------------------------ --泉州医保接口要求单价*数量必须等于金额 begin select VALUE0 into ls_DJSYXJ from XT_XTCS00 where NAME00 = 'SF_YBDJSLJE'; exception when others then ls_DJSYXJ:='N'; end; --收费项目的金额超过上限是否进行拆分 begin select upper(trim(VALUE0)) into ls_CGSXSFCF from XT_XTCS00 where NAME00 = 'SF_SFXMCGSXSFCF'; exception when others then ls_CGSXSFCF:='Y'; end; --门诊收费医保超过上限是否按原项目拆分,暂停使用此参数 begin select upper(trim(VALUE0)) into ls_SF_YBCGSXSFYYXMCF from XT_XTCS00 WHERE NAME00='SF_YBCGSXSFYYXMCF'; exception when no_data_found then ls_SF_YBCGSXSFYYXMCF:='N'; end; --接口文件是否使用医保发票编号,还是使用医保发票名称来传送 begin select upper(substrb(VALUE0,1,1)) into ls_SYFPBH from XT_XTCS00 where NAME00 = 'ZY_YBFPBH'; exception when others then ls_SYFPBH:='N'; end; --接口是否按医保目录的项目名称发送 begin select upper(substrb(value0,1,1)) into ls_ybmcfs from xt_xtcs00 where name00='XT_YBJK_SFAYBXMMCFS'; exception when others then ls_ybmcfs:='N'; end; --接口项目名称是否按新格式发送(医保项目名称(院内项目名称)) begin select upper(trim(VALUE0)) into ls_XMFSGS from xt_xtcs00 where name00='SF_YBFSXMMCGS'; exception when others then ls_XMFSGS:='N'; end; ----一次性材料项目格式是否改为 医保对应项目+(医院收费项目) begin select trim(value0) into ls_YCXCLXMXGS from xt_xtcs00 where name00='SF_YCXCLXMXGS'; exception when OTHERS then ls_YCXCLXMXGS:='N'; end; --是否厦门医保接口 Y:是 N:否 begin select trim(value0) into ls_sfxmyb from xt_xtcs00 where name00='SF_SFXMYBJK'; exception when others then ls_sfxmyb:='N'; end; --处理厦门医保诊疗费的收费项目 begin select nvl(to_number(value0),0) into ls_sfxmid_zcf000 from xt_xtcs00 where name00='SF_XMYBZLFID'; exception when others then ls_sfxmid_zcf000:=0; end; ---医生姓名是否改为医生证件号 begin select trim(value0) into CS_YSZJHM from xt_xtcs00 where name00='SF_MZSFYSZJHM'; exception when others then CS_YSZJHM:='N'; end; --医生证件号码来源 0:取BM_YGBM00.YSZJHM 1:取BM_YGBM00.SFZBH0 默认0 LS_ZJHMLY:=nvl(substrb(SF_SF_TYZD00('医保新接口参数设置','YSZJHMLY'),1,10),'0'); select SF_SF_GetYYKSBM(LS_BRID00,LS_GHH000,1)YSZJHM into lv_yszjhm from dual; --医保编号前缀编码,是否目录限制 begin select trim(FBMGZ0),SFMLXZ into ls_YBBHQZ,ls_SFMLXZ from bm_ybbrlb where YBZXLB = ls_YBZXLB and YBBRLB = ls_YBBRLB; exception when no_data_found then ls_YBBHQZ:='990000000000'; --非医保项目的编码前缀 end; -----取YGBH00=0的医生姓名----begin------- ls_XMTEMP:='99999'; begin select ZWXM00 into ls_ZWXM01 from BM_YGBM00 where YGBH00=0; exception when OTHERS then ls_ZWXM01:='99999'; end; --SF_SFQYYBXJJK 门诊或住院系统是否启用医保限价接口 Y:启用 N:不启用 默认值N:不启用 begin select SF_SF_YBXJQY(LS_BRID00,0,'0') into LS_YBXJQY from dual; --返回值 Y:启用 N:不启用 exception when others then LS_YBXJQY:='N'; end; --SF_YPCWZHFS:门诊收费药品最高限价转化方式:0:不处理直接报错 F:数量不变,单价=限价超过按原项目非医保 默认:0 begin select substrb(trim(VALUE0),1,100) into LS_YPCWZHFS from XT_XTCS00 where name00 = 'SF_YPCWZHFS'; exception when others then LS_YPCWZHFS:='0'; end; LS_YPCWZHFS:=nvl(LS_YPCWZHFS,'0'); --SF_FSYBYPFYSFRQHZ:门诊医保数据整理(SP_SF_YBJK00_FJ0000)药品费用是否发送明细 0:先汇总发送 1:按明细发送 默认:1 begin select substrb(trim(VALUE0),1,100) into LS_FSYBYPFYSFRQHZ from XT_XTCS00 where name00 = 'SF_FSYBYPFYSFRQHZ'; exception when others then LS_FSYBYPFYSFRQHZ:='1'; end; LS_FSYBYPFYSFRQHZ:=nvl(LS_FSYBYPFYSFRQHZ,'1'); --GetType_bkeh83:新医保接口bkeh83(国家标准对应编码)取值方式 1:优先取BM_YBSFDY(为空取BM_YYSFXM),0:优先取BM_YYSFXM(为空取BM_YBSFDY) LS_GetType_bkeh83:=nvl(substrb(SF_SF_TYZD00('医保新接口参数设置','GetType_bkeh83'),1,10),'1'); --YBZXLB_MXCSFSYBMSC:新医保医保项目70开头项目编码(系统参数:SF_MXCSFSYBMSC、ZY_MXCSFSYBMSC=Y)不转成原码医保中心类别(IC_YBBRLB.YBZXLB)多个用|隔开 默认值:空值 LS_YBZXLB_MXCSFSYBMSC:=trim(substrb(SF_SF_TYZD00('医保新接口参数设置','YBZXLB_MXCSFSYBMSC'),1,100)); if LS_YBZXLB_MXCSFSYBMSC is not null and instrb('|'||LS_YBZXLB_MXCSFSYBMSC||'|','|'||trim(LS_YBZXLB)||'|')>0 then SF_MXCSFSYBMSC:='N';--新医保明细上传项目是否按原编码上传,Y:是,N:否 (70或90开头),默认N end if; if LS_SFXYB0='0' then--是否新医保 0:否 1:是 SF_MXCSFSYBMSC:='N';--新医保明细上传项目是否按原编码上传,Y:是,N:否 (70或90开头),默认N end if; --新医保接口明细上传bkc007节点是否开启发送医师国家编码(=BM_YGBM00.YBYGDM),=0原来模式[0:否,1:门诊,2:住院,3:门诊住院] 默认0 LS_BKC007_FSYSGJBM:=nvl(substrb(SF_SF_TYZD00('医保新接口参数设置','BKC007_FSYSGJBM'),1,10),'0'); --新医保接口bkeh83(国家编码C码)是否转化为bke045(医保结算编码)第一位:0:不开启 1:门诊2:住院3:门诊和住院,第二位(1:项目2:药品3:项目和药品)默认值:00 LS_Change_bkeh83_bke045:= nvl(substrb(SF_SF_TYZD00('医保新接口参数设置','Change_bkeh83_bke045'),1,10),'00'); --新医保接口bke182(院内项目名称)是否转化为bke046(医保项目名称)第一位:0:不开启 1:门诊2:住院3:门诊和住院,第二位(1:项目2:药品3:项目和药品)默认值:00 LS_Change_bke182_bke046:= nvl(substrb(SF_SF_TYZD00('医保新接口参数设置','Change_bke182_bke046'),1,10),'00'); --是否启用按自费处方标志分开结算 0:不启用 1:启用 LS_OPEN_ZFCFBZ:=substrb(SF_SF_OPEN_ZFCFBZ(LS_BRID00,LS_FBBH00),1,1); -----取YGBH00=0的医生姓名----END------- select count(*) into XT_ZDYBYPMLXYSPBR from BM_TYZD00 where ZDMC00='指定费别审批的药品目录' and YXBZ00='1' and BZDYBH=to_char(ls_FBBH00)||'-'||ls_YBZXLB||'-'||ls_YBBRLB; ---未扣费费用业务处理---更新中间表对照--begin-- for R_MX in FYTEMPMX loop LS_MsgStr:='开始整理数据'; LS_YPDLBH:=null;--药品大类 LS_JXBH00:=null;--剂型编码 LS_PCMC00:=null;--频次名称 LS_YPYFMC:=null;--药品用法名称 LS_JLDW00:=null;--剂量单位 LS_CFDW00:=null;--处方单位 LS_YYSJ00:=null;--用药时间数 LS_CSL000:=null;--次数量(剂量单位) LS_ZYTS00:=null;--中药贴数 LS_CFLSH0:=R_MX.CFLSH0; --处方流水号 LS_YJDJH0:=R_MX.YJDJH0; --医技单据号 LS_CFID00:=R_MX.CFID00;--处方ID或YJ_YWJJ00.ID0000或费用明细ID LS_SFDJH0:=R_MX.DJH000; --收费单据号 LS_SFXMID:=R_MX.SFXMID; LS_YYSFXM_BKEH83:=null;--医院收费项目:医保国家标准编码 LS_YBSFDY_BKEH83:=null;--医院收费对应:医保国家标准编码 LS_YBSFXM_BKEH83:=null;--医保收费项目:医保国家标准编码 LS_YBSFDY_MZZYBZ:='2';--医院收费对应:门诊住院标志 0门诊,1住院,2门诊住院都可用 LS_BKEH83:=null;--国家标准对应编码 LS_BKEH05:=null;--医保备用1 LS_BKEH06:=null;--医保备用2 LS_BAKXML:=null;--HIS备用字段(xml格式)后续扩展 LS_SFTHML:=0; --0不替换 1替换 LS_COU:=0; --临时变量 LS_FLAG00:=R_MX.FLAG00; --0:费用 1:处方 LS_MXID00:=R_MX.MXID00; --明细ID LS_YPNM00:=R_MX.YPNM00;--药品内码 LS_XMBH00:=LS_SFXMID;--费用项目编号 LS_XMMC00:=substrb(R_MX.XMMC00,1,100);--费用项目名称 LS_SFXMMC:=substrb(R_MX.XMMC00,1,100);--自费发送项目 LS_XMDJ00:=R_MX.XMDJ00; --单价 LS_XMSL00:=R_MX.XMSL00; --项目数量 LS_HJJE00:=R_MX.XMJE00; --金额 LS_GG0000:=substrb(R_MX.XMGG00,1,20); --规格 LS_DW0000:=substrb(R_MX.XMDW00,1,20); --单位 LS_JX0000:=substrb(R_MX.JX0000,1,50);--'剂型'=BM_YPJX00.YBFSBM(BM_YD0000.JXBH00) LS_DCYYDW:=substrb(R_MX.DCYYDW,1,50);--'单次用药单位' LS_QYZL00:=substrb(R_MX.QYZL00,1,20);--'取药总量';=sin_dos_dscr LS_QYZLDW:=substrb(R_MX.QYZLDW,1,50);--'取药总量单位' LS_YLTS00:=substrb(R_MX.YLTS00,1,20);--'药量天数' LS_GYTJ00:=substrb(R_MX.GYTJ00,1,50);--'给药途径' =BM_YPYF00.YBFSBM=medc_way_dscr LS_YPPL00:=substrb(R_MX.YPPL00,1,50);--频率代码=used_frqu_dscr LS_YPYL00:=substrb(R_MX.YPYL00,1,20);--剂量+单位 LS_KDKS00:=null;--开单科室编码 LS_KDKSMC:=null;--开单科室名称 LS_KDYS00:=null;--开单医生编码 LS_KDYSXM:=null;--开单医生姓名 LS_ZXKS00:=null;--执行科室编码 LS_ZXKSMC:=null;--执行科室名称 LS_ZXYS00:=null;--执行医生编码 LS_ZXYSXM:=null;--执行医生姓名 LS_YZH000:=substrb(LS_CFID00,1,30);--医嘱号=费用明细id或处方id LS_YPPLMC:=null;--药品频率名称 LS_ZFCFBZ:=null;--自费处方标志:0或空:正常处方,1:自费处方 LS_YPXJXMDJ:=0;--药品最高限价项目单价 LS_YPXJXMSL:=0;--药品最高限价项目数量 LS_YPXJXMJE:=0;--药品最高限价费用合计金额 LS_HJJETEMP:=0;--项目金额临时变量 LS_YPXJCFBZ :='0';--药品最高限价拆分标识 0:不拆分 1:拆分(数量不变,单价=最高限价 超过独立收费生成一条) 2:拆分(数量不变,单价=最高限价 超过原药品项目非医保) LS_CFYJXMDJ:=LS_XMDJ00;--处方医技原项目单价 LS_CFYJXMSL:=LS_XMSL00;--处方医技原项目数量 LS_CFYJHJJE:=LS_HJJE00;--处方医技合计金额 Pro_Out_ZXZT00:=null;--[出参]:执行状态 0:失败 1:成功 Pro_Out_ERRMSG:=null;--[出参]:错误信息 Pro_Out_OUTXML:=null;--[出参]:备用出参xml格式输出 --更新批次库存的价格--begin--- if V_DLSJGL='Y' and R_MX.FPXMBH in ('01','02','03') then begin select SFKSLY,SFXJJZ,YFBMBH into V_SFKSLY,v_SFXJJZ,v_YFBMBH from YF_MZCF00 Where BRID00=LS_BRID00 and CFLSH0=LS_CFLSH0; exception when others then V_SFKSLY:='N'; v_SFXJJZ:='0'; end; if V_SFKSLY='N' then --科室领药不做科室批次预扣--begin-- begin select ZHL000 into v_ZHL000 from YF_MZCFMX Where CFID00=R_MX.CFID00 and CFLSH0=LS_CFLSH0; exception when others then v_ZHL000:=1; end; begin select K2J000 into V_K2J000 from BM_YD0000 where YPNM00=LS_YPNM00; exception when others then V_K2J000:=1; end; v_YPZSL0:=R_MX.XMSL00; V_DQLSDJ:=SF_SF_GETDQPCJG(v_YFBMBH,LS_YPNM00,v_YPZSL0*v_ZHL000,to_number(v_SFXJJZ),0,R_MX.XMDJ00); if nvl(V_DQLSDJ,0)<>0 then v_XMDJ00:=round(V_DQLSDJ*v_ZHL000/V_K2J000,4); LS_XMDJ00:=v_XMDJ00; end if; end if; --科室领药不做科室批次预扣--end-- end if; --更新批次库存的价格--end--- LS_XMSL00:=ceil(LS_XMSL00*100)/100; --保留小数点2位(进位) --项目数量*单价不等于总金额重新算单价 if round(LS_XMSL00*LS_XMDJ00,2)<>round(LS_HJJE00,2) and nvl(LS_XMSL00,0)<>0 then LS_XMDJ00 := round(LS_HJJE00/LS_XMSL00,4); end if; --自费发送标志(0:费用 1:处方)--begin-- if LS_FLAG00 in ('0') then --0:费用 1:处方 --0:费用--begin-- begin select A.ZFFSBZ,substrb(SF_SF_GET_ZFCFBZ(1,A.BRID00,A.ZYGHID,A.SFDJH0,A.YJDJH0,A.CXDJH0,A.ZFCFBZ,A.ZLDCCF,null),1,1) as ZFCFBZ, A.KDKSBH as KDKS00,A.KDYS00 as KDYS00,A.YJKSBH as ZXKS00,0 as ZXYS00 into LS_ZFFSBZ,LS_ZFCFBZ,LS_KDKS00,LS_KDYS00,LS_ZXKS00,LS_ZXYS00 from YJ_YW0000 A where A.brid00=LS_BRID00 and A.YJDJH0=LS_YJDJH0; exception when OTHERS then LS_ZFFSBZ:=null; LS_ZFCFBZ:=null; end; if LS_ZFFSBZ is null then begin select max(A.ZFFSBZ) ZFFSBZ into LS_ZFFSBZ from YJ_YWJJ00 A where A.YJDJH0=LS_YJDJH0; exception when OTHERS then LS_ZFFSBZ:=null; end; end if; LS_ZFFSBZ:=nvl(LS_ZFFSBZ,'N'); --0:费用--end-- elsif LS_FLAG00 in ('1') then --1:处方--begin-- begin select substrb(SF_SF_GET_ZFCFBZ(0,A.BRID00,A.GHID00,A.DJH000,A.CFLSH0,A.BCCFH0,A.ZFCFBZ,A.FJFDJH,null),1,1) as ZFCFBZ, A.GHKS00 as KDKS00,A.YSGZH0 as KDYS00,A.YFBMBH as ZXKS00,0 as ZXYS00,a.YPDLBH,a.ZYTS00 into LS_ZFCFBZ,LS_KDKS00,LS_KDYS00,LS_ZXKS00,LS_ZXYS00,LS_YPDLBH,LS_ZYTS00 from YF_MZCF00 A where A.BRID00=LS_BRID00 and A.CFLSH0=LS_CFLSH0; exception when OTHERS then LS_ZFCFBZ:=null; LS_YPDLBH:=null;--药品大类 LS_ZYTS00:=null;--中药贴数 end; --处方明细 begin select a.PCMC00,a.YPYFMC,a.JLDW00,a.CFDW00,a.YYSJ00,a.CSL000,e.JXBH00,trim(to_char(A.YPZSL0*a.zhl000,'99990.99')) as QYZL00 into LS_PCMC00,LS_YPYFMC,LS_JLDW00,LS_CFDW00,LS_YYSJ00,LS_CSL000,LS_JXBH00,LS_QYZL00 from YF_MZCFMX A,BM_YD0000 e where a.YPNM00=e.YPNM00 and A.CFLSH0=LS_CFLSH0 and a.CFID00=LS_CFID00; exception when OTHERS then LS_PCMC00:=null;--频次名称 LS_YPYFMC:=null;--药品用法名称 LS_JLDW00:=null;--剂量单位 LS_CFDW00:=null;--处方单位 LS_YYSJ00:=null;--用药时间数 LS_CSL000:=null;--次数量(剂量单位) LS_JXBH00:=null;--剂型编码 LS_QYZL00:=null; end; if LS_SFXYB0='1' then--是否新医保 0:否 1:是 LS_JX0000:=substrb(nvl(LS_JXBH00,LS_JX0000),1,50);--'剂型'=BM_YPJX00.YBFSBM(BM_YD0000.JXBH00) LS_DCYYDW:=substrb(nvl(LS_JLDW00,LS_DCYYDW),1,50);--'单次用药单位' LS_QYZL00:=substrb(nvl(LS_QYZL00,LS_QYZL00),1,20);--'取药总量';=sin_dos_dscr LS_QYZLDW:=substrb(nvl(LS_JLDW00,LS_QYZLDW),1,50);--'取药总量单位' if LS_YPDLBH='2' then LS_YLTS00:=LS_ZYTS00; else LS_YLTS00:=LS_YYSJ00; end if; LS_YLTS00:=substrb(nvl(LS_YLTS00,LS_YLTS00),1,8);--'药量天数' LS_GYTJ00:=substrb(nvl(LS_YPYFMC,LS_GYTJ00),1,50);--'给药途径' =BM_YPYF00.YBFSBM=medc_way_dscr LS_YPPL00:=substrb(nvl(LS_YPPL00,LS_YPPL00),1,8);--频率代码=used_frqu_dscr LS_YPYL00:=substrb(nvl(LS_YPYL00,LS_YPYL00),1,20);--剂量+单位 LS_PCMC00:=LS_PCMC00;--频次名称 LS_YPPLMC:=substrb(nvl(LS_PCMC00,LS_YPPLMC),1,50);--药品频率名称 LS_YPYL00:=substrb(trim(to_char(ls_CSL000,'9999990.00'))||LS_DCYYDW,1,20); LS_YPPLMC:=substrb(nvl(SF_SF_GETPCBM(LS_YPPLMC,LS_CFID00,'0','1','2'),LS_YPPLMC),1,50); end if; --1:处方--end-- end if; --自费发送标志(0:费用 1:处方)--end-- --是否启用按自费处方标志分开结算 0:不启用 1:启用(未启用参数按正常处方处理) if LS_OPEN_ZFCFBZ not in ('1') then LS_ZFCFBZ:='0'; --自费处方标志:0:正常处方 1:自费处方 end if; --获取发票编码和名称 begin select a.BH0000,a.XMMC00 into LS_YYFPBH,LS_YYFPMC from BM_FPXM00 a,BM_YYSFXM b where a.FPXMID=b.MZFPID AND SFXMID=LS_XMBH00; exception when others then LS_YYFPBH:=substrb(R_MX.FPXMBH,1,2); LS_YYFPMC:=substrb(R_MX.FPXMMC,1,20); end; if LS_FLAG00='1' and R_MX.FPXMBH not in ('01','02','03') then LS_FLAG00:='0'; --0:费用 end if; --库存单位转化率、门诊发药单位转化率、住院发药单位转化率、医保转换率--begin-- if LS_FLAG00 in ('0') then --0:费用 1:处方 LS_K2J000:=null;--库存单位转化率 LS_M2J000:=null;--门诊发药单位转化率 LS_Z2J000:=null;--住院发药单位转化率 LS_YB2J00:=null; --医保转换率 else begin select e.K2J000 as K2J000,e.M2J000 as M2J000,e.Z2J000 as Z2J000,e.YB2J00 as YB2J00,e.YBDW00 as YBDW00 into LS_K2J000,LS_M2J000,LS_Z2J000,LS_YB2J00,LS_YBDW00 from BM_YD0000 e where e.YPNM00=LS_YPNM00; exception when others then LS_K2J000:=null;--库存单位转化率 LS_M2J000:=null;--门诊发药单位转化率 LS_Z2J000:=null;--住院发药单位转化率 LS_YB2J00:=null; --医保转换率 LS_YBDW00:=null; --医保单位 end; end if; --库存单位转化率、门诊发药单位转化率、住院发药单位转化率、医保转换率--end-- LS_MsgStr:='位置2:项目编码:'||LS_XMBH00; if (XT_ZDYBYPMLXYSPBR>0) and (LS_FLAG00='1') then LS_SFTHML:=SF_XT_GETFYBMLBH('0',LS_BRID00,LS_XMBH00,0);--返回0不替换 1替换 else LS_SFTHML:=0; end if; -- MZSF-20201124-002 begin select nvl(ZFFSBZ,'N') into LS_ZFFSBZ from YF_MZCFMX where CFID00=R_MX.CFID00; exception when others then LS_ZFFSBZ := 'N'; end; -- MZSF-20201124-002 --门诊自费发送项目 if LS_FLAG00='0' then select count(*) into LS_COU from BM_TYZD00 where ZDMC00='门诊自费发送项目' and DJ0000=LS_XMBH00 and instr(','||MC0000||',',','||LS_YBZXLB||',')>0 and YXBZ00='1'; end if; if LS_ZFFSBZ='Y' or LS_COU>0 then LS_SFTHML:=1; end if; --医保业务处理--begin-- if LS_FBBH00=3 then begin select a.XMMC00 as FPXMMC,a.BH0000 as FPXMBH,C.SFYBXM,nvl(C.SFSX00,0) as YBXMSX, D.XMMC00 as YBXMMC,substrb(C.YBXMBH,1,50) as ls_YBXMBH,Substrb(a.CBXMBH,1,20) as CBXMBH, D.XMDW00 as YBDDW0,D.XMDW01 as YBXDW0,D.YBJSDJ as YBJSDJ,D.YBZGDJ as YBZGDJ,D.YBJSDJ1,D.YBZGDJ1,C.BKEH83,D.BKEH83 as YBSFXM_BKEH83, nvl(C.MZZYBZ,'2')MZZYBZ,upper(substrb(nvl(C.BKEA96,'Y'),1,1)) as BKEA96 into LS_FPXMMC,LS_FPXMBH,LS_SFYBXM,LS_YBXMSX,ls_YBXMMC,ls_YBXMBH,ls_CBXMBH, LS_YBDDW0,LS_YBXDW0,LS_YBJSDJ,LS_YBZGDJ,LS_YBJSDJ1,LS_YBZGDJ1,LS_YBSFDY_BKEH83,LS_YBSFXM_BKEH83, LS_YBSFDY_MZZYBZ,LS_YBSFDY_BKEA96 from BM_YBFPXM A,VW_BM_YBSFDY C,BM_YBSFXM D where 1=1 and a.BH0000 = C.YBMZFP and a.YBZXLB = C.YBZXLB and C.YBBRLB = LS_YBBRLB and C.SFXMID = LS_XMBH00 and C.YBZXLB = D.YBZXLB(+) and C.YBXMBH = D.XMBH00(+) and C.SFYP00 = decode(LS_FLAG00,'0','N','Y') and a.YBZXLB = LS_YBZXLB and a.SYBZ00 <> '2' ; --非住院 exception when others then LS_FPXMMC:=substrb(R_MX.FPXMMC,1,20);--医保发票名称 LS_FPXMBH:=substrb(nvl(R_MX.FPXMBH,R_MX.FPXMMC),1,2);--医保发票编码 LS_SFYBXM:=substrb(R_MX.SFYB00,1,1);--是否医保项目 Y:是 N:否 LS_YBXMSX:=0; --收费上限 ls_YBXMMC:=substrb(R_MX.XMMC00,1,50);--医保项目名称 ls_YBXMBH:=substrb(R_MX.YBXMBH,1,50);--医保项目编码 ls_CBXMBH:=null; --超标项目编码 LS_YBDDW0:=null; --医保大单位 LS_YBXDW0:=null; --医保小单位 LS_YBJSDJ:=null; --医保结算单价 LS_YBZGDJ:=null; --医保最高限价 LS_YBJSDJ1:=null; --医保结算单价 大单位 LS_YBZGDJ1:=null; --医保最高单价 大单位 end; --2021.08.07 SFYBXM改为取BM_YBSFDY.BKEA96 if LS_SFXYB0='0' then--是否新医保 0:否 1:是 LS_SFYBXM:=LS_SFYBXM; --旧医保根据SFYB00控制 elsif LS_SFXYB0='1' then--是否新医保 0:否 1:是 if LS_YBZXLB_MXCSFSYBMSC is not null then if instrb('|'||LS_YBZXLB_MXCSFSYBMSC||'|','|'||trim(LS_YBZXLB)||'|')>0 then LS_SFYBXM:=LS_SFYBXM; --某些费别,比如两费保健等等,取BM_YBSFDY.SFYBXM else LS_SFYBXM:=LS_YBSFDY_BKEA96; end if; else LS_SFYBXM:=LS_YBSFDY_BKEA96; end if; end if; if LS_YBXMBH in ('700000000001','700000000002','700000000003','700000000004') then LS_SFYBXM:='N'; end if; LS_BKEH83:=LS_YBSFDY_BKEH83; if LS_FLAG00='0' then begin select BKEH83 into LS_YYSFXM_BKEH83 from BM_YYSFXM B where B.SFXMID=LS_XMBH00 and b.TZRQ00 is null; exception when others then LS_YYSFXM_BKEH83:=null; end; --GetType_bkeh83:新医保接口bkeh83(国家标准对应编码)取值方式 1:优先取BM_YBSFDY(为空取BM_YYSFXM),0:优先取BM_YYSFXM(为空取BM_YBSFDY) if LS_GetType_bkeh83='0' then LS_BKEH83:=nvl(nvl(LS_YYSFXM_BKEH83,LS_YBSFXM_BKEH83),LS_YBSFDY_BKEH83); --0:优先取BM_YYSFXM(为空取BM_YBSFDY) else LS_BKEH83:=nvl(LS_YBSFDY_BKEH83,nvl(LS_YYSFXM_BKEH83,LS_YBSFXM_BKEH83)); --1:优先取BM_YBSFDY(为空取BM_YYSFXM) end if; end if; if LS_YBSFDY_MZZYBZ in ('1') then --门诊住院标志 0门诊,1住院,2门诊住院都可用 LS_SFTHML:=1; --0 不替换 1替换 LS_SFYBXM:='N'; LS_YBZFBL:=1; end if; --药品医保项目单位转化--begin--- if (LS_YBXJQY='Y') and (LS_FLAG00 in ('1','2')) and (nvl(LS_XMSL00,0)<>0) then --2024.06.11 改为调用SP_SF_YBJK00_ZGXJCF begin SP_SF_YBJK00_ZGXJCF (LS_BRID00,'2',LS_FLAG00,ad_ID0000,LS_SFXMID,LS_XMMC00,LS_DW0000,LS_CFYJXMSL,LS_CFYJXMDJ,LS_CFYJHJJE,LS_XMSL00,LS_XMDJ00,LS_HJJE00, LS_YBXMBH,LS_YBXMMC,LS_YBXMSX,LS_YBDW00,LS_YBDDW0,LS_YBXDW0,LS_K2J000,LS_M2J000,LS_Z2J000,LS_YB2J00,LS_YBJSDJ,LS_YBZGDJ,LS_YBJSDJ1,LS_YBZGDJ1, LS_YPCWZHFS,'N','',Pro_Out_ZXZT00,LS_YPXJCFBZ,LS_YPXJXMBH,LS_DW0000,LS_XMSL00,LS_XMDJ00,LS_HJJE00,LS_YPXJXMSL,LS_YPXJXMDJ,LS_YPXJXMJE, Pro_Out_ERRMSG,Pro_Out_OUTXML ); if Pro_Out_ZXZT00=0 then as_YHMSG0:=substrb(Pro_Out_ERRMSG,1,200); as_SYSMSG:=as_YHMSG0; return; end if; exception when others then as_YHMSG0:=substrb('药品最高限价拆分拆分异常!错误原因:'||sqlerrm,1,200); as_SYSMSG:=as_YHMSG0; return; end; /* if (trim(LS_DW0000)=trim(LS_YBDDW0)) or (trim(LS_DW0000)=trim(LS_YBXDW0)) then --发药=医保大单位或小单位 LS_DW0000:=LS_DW0000; else if (trim(LS_YBDW00) is not null) and (nvl(LS_YB2J00,0)>0) and (nvl(LS_M2J000,0)>0) then if trim(LS_DW0000)=trim(LS_YBDW00) then LS_DW0000:=LS_YBDW00; else --转成计量单位 LS_DW0000:=LS_YBDW00; LS_HJJE00:=LS_HJJE00; LS_XMSL00:=round((LS_XMSL00*LS_M2J000)/LS_YB2J00,2); LS_XMDJ00:=round(LS_HJJE00/LS_XMSL00,4); LS_XMSL00:=ceil(LS_XMSL00*100)/100; --保留小数点2位(进位) if round(LS_XMSL00*LS_XMDJ00,2)<>round(LS_HJJE00,2) then --进位后数量*单价<>合计金额重新算单价 LS_XMDJ00 := round(LS_HJJE00/LS_XMSL00,4); end if; end if; end if; end if; --2018.12.27 by zhangyc 增加院内单价和最高限价比较---begin-- if trim(LS_DW0000)=trim(LS_YBDDW0) and nvl(LS_XMDJ00,0)>nvl(LS_YBZGDJ,0) and nvl(LS_YBZGDJ,0)>0 then LS_DW0000:=trim(LS_YBDDW0); LS_HJJE00:=LS_HJJE00; LS_XMDJ00:=nvl(LS_YBZGDJ,0); LS_XMSL00:=round(LS_HJJE00/LS_XMDJ00,4); --2020.01.16 数量保留两位小数位(进位) LS_XMSL00:=ceil(LS_XMSL00*100)/100; --保留小数点2位(进位) if round(LS_XMSL00*LS_XMDJ00,2)<>round(LS_HJJE00,2) then --进位后数量*单价<>合计金额重新算单价 LS_XMDJ00 := round(LS_HJJE00/LS_XMSL00,4); end if; end if; if trim(LS_DW0000)=trim(LS_YBXDW0) and nvl(LS_XMDJ00,0)>nvl(LS_YBZGDJ1,0) and nvl(LS_YBZGDJ1,0)>0 then LS_DW0000:=trim(LS_YBXDW0); LS_HJJE00:=LS_HJJE00; LS_XMDJ00:=nvl(LS_YBZGDJ1,0); LS_XMSL00:=round(LS_HJJE00/LS_XMDJ00,4); --2020.01.16 数量保留两位小数位(进位) LS_XMSL00:=ceil(LS_XMSL00*100)/100; --保留小数点2位(进位) if round(LS_XMSL00*LS_XMDJ00,2)<>round(LS_HJJE00,2) then --进位后数量*单价<>合计金额重新算单价 LS_XMDJ00 := round(LS_HJJE00/LS_XMSL00,4); end if; end if; --2018.12.27 by zhangyc 增加院内单价和最高限价比较---end-- */ end if; --药品医保项目单位转化--end--- --特殊病种目录外药品是否替换处理 if (LS_SFTHML=0) and (LS_SFYBXM='Y') and (LS_FLAG00='1') and (SF_TSBZXZCFXM='Y') and (AS_TSBZBH is not null) and (LS_YBXMBH is not null) then select count(*) into LS_COUNT0 from BM_TSBZXM b, BM_TSBZB0 c where trim(B.XMBH00)=trim(ls_YBXMBH) AND b.BH0000=C.BH0000 and B.YBZXLB=C.YBZXLB and B.YBZXLB=ls_YBZXLB and ( B.BH0000=AS_TSBZBH or ( exists (select 1 from VW_YS_TSBZB_GXYTNB L where L.BH0000=as_tsbzbh) and B.BH0000 in (select BH0000 from VW_YS_TSBZB_GXYTNB) ) ) and c.MLXZBZ in ('1','3'); if LS_COUNT0=0 then LS_SFTHML:=1; end if; end if; if (trim(LS_SFXNHFSQZF) = 'Y') and (LS_SFYP00='N') and (LS_YYFPBH<>'04') and (LS_YYFPBH<>'06') then LS_YBXMBH := null; LS_YBZFBL := 1; LS_SFYBXM := 'N'; end if; --如果没有对应,查找BM_YBSFXM本发票记录有没有定义未对应或超标的项目医保接口使用的医保项目编号 -- 如果有定义,使用此定义的医保项目来生成接口文件,如果没有定义,使用'990000000000+医保发票编号方式 if ls_CBXMBH is not null then --by MZSF-20150608-001 增加 exception 异常处理 begin select a.XMMC00,a.MZFPXM,b.XMMC00,c.XMMC00 into ls_CBXMMC,ls_CBFPBH,ls_CBFPMC,ls_YYFPMC from BM_YBSFXM a,BM_YBFPXM b,BM_FPXM00 c where a.YBZXLB=LS_YBZXLB and a.XMBH00=LS_CBXMBH and a.MZFPXM=b.BH0000 and b.YBZXLB=ls_YBZXLB and b.YYFPXM=c.FPXMID(+); exception when others then LS_CBXMMC:=LS_XMMC00; LS_CBXMBH:=substrb(trim(LS_YBBHQZ)||ls_FPXMBH,1,20); LS_CBFPBH:=LS_FPXMBH; LS_CBFPMC:=LS_FPXMMC; end; --取院内发票名称 if (LS_SFFSYYFMMC='Y') and (LS_SFYP00='N') then LS_CBFPMC:=ls_YYFPMC; end if; else ls_CBXMMC:=ls_XMMC00; ls_CBXMBH:=substrb(TRIM(LS_YBBHQZ)||LS_FPXMBH,1,20); ls_CBFPBH:=LS_FPXMBH; ls_CBFPMC:=LS_FPXMMC; end if; if ls_SFTHML=1 and SF_MXCSFSYBMSC = 'Y' then ls_YBZFBL:=1; ls_SFYBXM:='N'; ls_YBXMMC:=ls_YBXMMC; LS_YBXMBH:=LS_YBXMBH; LS_FPXMMC:=LS_FPXMMC; LS_FPXMBH:=LS_FPXMBH; else if (ls_YBXMBH is null) or (ls_SFTHML=1) then ls_YBXMMC:=trim(ls_CBXMMC); LS_YBXMBH:=substrb(trim(ls_CBXMBH),1,50); LS_FPXMMC:=trim(ls_CBFPMC); LS_FPXMBH:=trim(ls_CBFPBH); end if; if LS_SFTHML=1 then LS_YBZFBL:=1; LS_SFYBXM:='N'; end if; end if; --特殊处理,如果对应的是以下几个医保项目,需要传递院内项目名称 if LS_YBXMBH in ('01670000000001','01670000000002','01670000000005','01670000000006','01670000000007','01670000000008') then ls_YBXMMC:=ls_XMMC00; end if; if ls_FLAG00='0' then select count(*) into ls_COUNT1 from BM_TYZD00 where ZDMC00='药事服务费' and BH0000=ls_SFXMID; --沙县如果是药事服务费,名称要送本院名称 if LS_COUNT1>0 then ls_YBXMMC:=ls_XMMC00; end if; end if; if (ls_YCXCLXMXGS='Y') and (LS_FLAG00='0') and (LS_XMFSGS='N') then select nvl(JSXM00,'0') into ls_JSXM00 from BM_YYSFXM where sfxmid=ls_XMBH00; if trim(ls_JSXM00)='2' then ls_YBXMMC:=ls_YBXMMC||'('||ls_XMMC00||')'; end if; end if; begin select a.XMMC00 as FPXMMC into LS_FPXMMC from BM_YBFPXM A where 1=1 and a.BH0000=LS_FPXMBH and a.YBZXLB= LS_YBZXLB; exception when others then LS_FPXMMC:=substrb(R_MX.FPXMMC,1,20);--医保发票名称 end; if LS_SYFPBH='Y' then LS_FPXMMC_TEMP:=substrb(LS_FPXMBH,1,20); else LS_FPXMMC_TEMP:=substrb(LS_FPXMMC,1,40); end if; if SF_MXCSFSYBMSC='Y' then LS_YBXMBH:=LS_YBXMBH; --项目编码(原码) LS_YBXMMC:=LS_YBXMMC; --项目名称(原码) LS_FPXMBH:=LS_FPXMBH; --发票项目编码(原码) LS_FPXMMC:=LS_FPXMMC; --发票项目名称(原码) end if; --修改中间表数据 if LS_FLAG00='1' then LS_CFHAO0:=substrb(SF_SF_GET_FEEDETL_SN('1',LS_CFLSH0,LS_CFID00,'0'),1,50);--医院唯一处方号 else if nvl(LS_SFDJH0,0)=0 and nvl(LS_YJDJH0,0)>0 then LS_CFHAO0:=substrb(SF_SF_GET_FEEDETL_SN('3',LS_YJDJH0,LS_CFID00,'0'),1,50);--医院唯一处方号 elsif nvl(LS_SFDJH0,0)>0 and nvl(LS_YJDJH0,0)>0 then LS_CFHAO0:=substrb(SF_SF_GET_FEEDETL_SN('0',LS_SFDJH0,LS_CFID00,'0'),1,50);--医院唯一处方号 end if; end if; LS_KDKS00:=LS_KDKS00;--开单科室编码 LS_KDKSMC:=substrb(SF_XT_GETBM_BMBM00(LS_KDKS00,'0'),1,50);--开单科室名称 LS_KDYS00:=LS_KDYS00;--开单医生编码 LS_KDYSXM:=substrb(SF_XT_GETBM_YGBM00(LS_KDYS00,'0'),1,50);--开单医生姓名 LS_ZXKS00:=LS_ZXKS00;--执行科室编码 LS_ZXKSMC:=substrb(SF_XT_GETBM_BMBM00(LS_ZXKS00,'0'),1,50);--执行科室名称 LS_ZXYS00:=LS_ZXYS00;--执行医生编码 LS_ZXYSXM:=substrb(SF_XT_GETBM_YGBM00(LS_ZXYS00,'0'),1,50);--执行医生姓名 LS_YZH000:=LS_YZH000;--医嘱号 LS_YPPLMC:=LS_YPPLMC;--药品频率名称 update SF_FYXX00_TEMPMX set CFHAO0=substrb(nvl(LS_CFHAO0,CFHAO0),1,500),--医院唯一处方号 FPXMBH=nvl(LS_FPXMBH,FPXMBH) ,--发票编码 FPXMMC=nvl(LS_FPXMMC_TEMP,FPXMMC) ,--发票名称 XMBH00=nvl(LS_YBXMBH,XMBH00) ,--医保项目编码 YBXMBH=nvl(LS_YBXMBH,YBXMBH) ,--医保项目编码 SFYB00=nvl(LS_SFYBXM,SFYB00) ,--是否医保 YBXMMC=nvl(LS_YBXMMC,YBXMMC) ,--医保项目名称 XMDW00=nvl(LS_DW0000,XMDW00) ,--单位 XMDJ00=nvl(LS_XMDJ00,XMDJ00) ,--单价 XMSL00=nvl(LS_XMSL00,XMSL00) ,--数量 XMJE00=nvl(LS_HJJE00,XMJE00) ,--金额 FLAG00=LS_FLAG00 ,--0:费用 1:处方 BKEH83=nvl(LS_BKEH83,BKEH83),--国家标准对应编码 BKEH05=nvl(LS_BKEH05,BKEH05),--医保备用1 BKEH06=nvl(LS_BKEH06,BKEH06),--医保备用2 BAKXML=nvl(LS_BAKXML,BAKXML),--HIS备用字段(xml格式)后续扩展 ZFCFBZ=nvl(LS_ZFCFBZ,ZFCFBZ),--自费处方标志:0或空:正常处方,1:自费处方 YPTS00=nvl(LS_YPTS00,YPTS00),--持续用药的合计天数 YPPL00=nvl(LS_YPPL00,YPPL00),--使用频率代码 YPYL00=nvl(LS_YPYL00,YPYL00),--使用剂量+剂量单位 JX0000=nvl(LS_JX0000,JX0000),--剂型 DCYYDW=nvl(LS_DCYYDW,DCYYDW),--单次用药单位 QYZL00=nvl(LS_QYZL00,QYZL00),--取药总量 QYZLDW=nvl(LS_QYZLDW,QYZLDW),--取药总量单位 YLTS00=nvl(LS_YLTS00,YLTS00),--药量天数 GYTJ00=nvl(LS_GYTJ00,GYTJ00),--给药途径 KDKS00=nvl(LS_KDKS00,KDKS00),--开单科室编码 KDKSMC=nvl(LS_KDKSMC,KDKSMC),--开单科室名称 KDYS00=nvl(LS_KDYS00,KDYS00),--开单医生编码 KDYSXM=nvl(LS_KDYSXM,KDYSXM),--开单医生姓名 ZXKS00=nvl(LS_ZXKS00,ZXKS00),--执行科室部门编码 ZXYS00=nvl(LS_ZXYS00,ZXYS00),--执行科室部门编码 YPPLMC=nvl(LS_YPPLMC,YPPLMC),--药品频率名称 YZH000=nvl(LS_YZH000,YZH000) --医嘱号 where ID0000=ad_ID0000 and BRID00=LS_BRID00 and MXID00=LS_MXID00; --原药品的对照编码和名称(2:拆分(数量不变,单价=最高限价 超过原药品项目非医保))--begin--- if LS_YPXJCFBZ in ('2') then LS_YPXJXMDJ:=LS_YPXJXMDJ; --药品最高限价项目单价 LS_YPXJXMSL:=LS_YPXJXMSL; --药品最高限价项目数量 LS_YPXJXMJE:=LS_YPXJXMJE; --药品最高限价费用合计金额 LS_YPXJYBDW:=trim(nvl(ls_DW0000,'无')); --药品最高限价医保项目单位 LS_YPXJSFYB:='N'; --药品最高限价是否医保项目 --SF_MXCSFSYBMSC控制新医保明细上传项目是否按原编码上传 Y:原编码 N:原来模式 if SF_MXCSFSYBMSC='Y' then LS_YPXJFPBH:=substrb(trim(LS_FPXMBH),1,2); --药品最高限价医保发票编号 LS_YPXJFPMC:=substrb(trim(ls_FPXMMC),1,40); --药品最高限价医保发票名称 LS_YPXJYBBH:=substrb(trim(LS_YBXMBH),1,50); --药品最高限价医保项目编号 LS_YPXJYBMC:=substrb(trim(LS_YBXMMC),1,100); --药品最高限价医保项目名称 else LS_YPXJFPBH:=substrb(nvl(trim(LS_CBFPBH),trim(LS_FPXMBH)),1,2); --药品最高限价医保发票编号 LS_YPXJFPMC:=substrb(nvl(trim(LS_CBFPMC),trim(ls_FPXMMC)),1,40); --药品最高限价医保发票名称 LS_YPXJYBBH:=substrb(nvl(trim(LS_CBXMBH),trim(LS_YBXMBH)),1,50); --药品最高限价医保项目编号 LS_YPXJYBMC:=substrb(nvl(trim(LS_CBXMMC),trim(LS_YBXMMC)),1,100); --药品最高限价医保项目名称 end if; if nvl(LS_YPXJXMJE,0)<>0 then LS_CFHAO0:=substrb(SF_SF_GET_FEEDETL_SN('1',LS_CFLSH0,LS_CFID00,'1'),1,50);--医院唯一处方号 insert into SF_FYXX00_TEMPMX( MXID00,ID0000,XMBH00,YBXMBH,SFYB00,FPXMMC,YBXMMC,XMMC00,YPNM00, XMGG00,XMDW00,XMDJ00,XMSL00,XMJE00,YSXM00,SFXMID,ZFBL00, YPTS00,YPPL00,YPYL00,YSZJHM,CFHAO0,JX0000,DCYYDW,QYZL00, QYZLDW,YLTS00,GYTJ00,YPCZFL,FPXMBH, CZY000,CZRQ00,CZSJ00,BRID00,FBBH00,YBZXLB, YBLB00,GHID00,GHH000,CFLSH0,CFID00,YJDJH0, DJH000,CXDJH0,JZDH00,JSLX00,XMFL00,CFBZ00, JZJE00,ZFJE00,GFJE00,XJZF00,QTZF00,KFZT00, FLAG00,GZHCID,SFFSHC,HCDBXM,BKEH83,BKEH05,BKEH06,BAKXML,ZFCFBZ, KDYS00,KDYSXM,KDKS00,KDKSMC,ZXKS00,ZXYS00,YZH000,YPPLMC ) select SQ_SF_FYTEMP_MXID00.nextval,ID0000,XMBH00,LS_YPXJYBBH,LS_YPXJSFYB,LS_YPXJFPMC,LS_YPXJYBMC,XMMC00,YPNM00, XMGG00,LS_YPXJYBDW,LS_YPXJXMDJ,LS_YPXJXMSL,LS_YPXJXMJE,YSXM00,SFXMID,ZFBL00, 1 as YPTS00,YPPL00,YPYL00,YSZJHM,LS_CFHAO0,JX0000,DCYYDW,1 as QYZL00, QYZLDW,YLTS00,GYTJ00,YPCZFL,LS_YPXJFPBH, CZY000,CZRQ00,CZSJ00,BRID00,FBBH00,YBZXLB, YBLB00,GHID00,GHH000,CFLSH0,CFID00,YJDJH0, DJH000,CXDJH0,JZDH00,JSLX00,XMFL00,CFBZ00, 0 as JZJE00,0 as ZFJE00,0 as GFJE00,0 as XJZF00,0 as QTZF00,KFZT00, FLAG00,GZHCID,SFFSHC,HCDBXM,BKEH83,BKEH05,BKEH06,BAKXML,ZFCFBZ, KDYS00,KDYSXM,KDKS00,KDKSMC,ZXKS00,ZXYS00,YZH000,YPPLMC from SF_FYXX00_TEMPMX where ID0000=ad_ID0000 and BRID00=LS_BRID00 and MXID00=LS_MXID00; end if; end if; --原药品的对照编码和名称(2:拆分(数量不变,单价=最高限价 超过原药品项目非医保))--end--- end if; --医保业务处理--end-- end loop; ---未扣费费用业务处理---更新中间表对照--end-- if ad_id0000>0 then ls_ID0000:=ad_id0000; else select SQ_SF_FYXX00_TEMP00_ID0000.nextval into ls_ID0000 from dual; end if; ---已扣费未结算业务处理---开始整理数据--begin-- open CUR_SF_FYMX00_MXID00; LOOP begin fetch CUR_SF_FYMX00_MXID00 into LS_FLAG00,LS_CFMXID,LS_ZFJE00,LS_XMMC00,LS_GG0000,LS_DW0000, ls_XMBH00,ls_ZWXM00,ls_XMDJ00,ls_XMSL00,ls_HJJE00,ls_ZFBL00, ls_YPTS00,ls_PCMC00,ls_CSL000,ls_JLDW00,LS_YSZJHM,ls_ZFFSBZ, LS_CFHAO0, --医院唯一处方号 LS_JX0000, --剂型=BM_YPJX00.YBFSBM(BM_YD0000.JXBH00) LS_DCYYDW, --单次用药单位 LS_QYZL00, --取药总量; LS_QYZLDW, --取药总量单位 LS_YLTS00, --药量天数 LS_GYTJ00, --给药途径 =BM_YPYF00.YBFSBM LS_YPCZFL, LS_DJH000, LS_XJZF00, LS_JZJE00, LS_GFJE00, LS_FPBH00, LS_FPMC00, LS_YPDLBH, LS_K2J000,--库存单位转化率 LS_M2J000,--门诊发药单位转化率 LS_Z2J000,--住院发药单位转化率 LS_YBDW00,--医保单位 LS_YB2J00,--医保转换率 LS_FYRQ00, --费用日期 LS_YSYGBH, --员工编码 LS_CFYJHJJE ,--处方医技合计金额 LS_ZFCFBZ ,--自费处方标志:0:正常处方 1:自费处方 LS_KDKS00 ,--开单科室编号 LS_KDYS00 ,--开单医生编号 LS_ZXKS00 ,--执行科室编号 LS_ZXYS00 ,--执行医生编号 LS_YZH000 ,--医嘱号=费用明细id或处方id LS_YPPLMC --药品频率名称 ; exit when CUR_SF_FYMX00_MXID00%notfound; --是否启用按自费处方标志分开结算 0:不启用 1:启用(未启用参数按正常处方处理) if LS_OPEN_ZFCFBZ not in ('1') then LS_ZFCFBZ:='0'; --自费处方标志:0:正常处方 1:自费处方 end if; if LS_SFXYB0='1' and LS_BKC007_FSYSGJBM in ('1','3') then--是否新医保 0:否 1:是 begin select trim(substrb(A.YBYGDM,1,30)) into LS_YBYGDM from BM_YGBM00 A where A.YGBH00=LS_YSYGBH; exception when others then LS_YBYGDM:=null; end; LS_YSZJHM:=nvl(substrb(LS_YBYGDM,1,30),LS_YSZJHM); end if; --取高值耗材项目ID if LS_FLAG00='0' then begin select Nvl(A.GZHCID,0),nvl(A.SFFSYB,'1'),B.HCDBBM into LS_GZHCID,LS_SFFSHC,LS_HCDBBM from BM_GZHCMX A,BM_GZHCFL B where A.GZHCID=B.GZHCID and A.SFXMID=LS_XMBH00 and rownum=1; exception when others then LS_GZHCID:=0; LS_SFFSHC:='1'; LS_HCDBBM:=''; end; LS_GZHCID:=Nvl(LS_GZHCID,0); LS_SFFSHC:=Nvl(LS_SFFSHC,1); if LS_HCDBBM is null then LS_GZHCID:=0; LS_SFFSHC:='1'; end if; end if; if LS_FLAG00='1' then LS_CFLSH0:=substrb(LS_CFHAO0,1,16); --处方流水号 LS_YJDJH0:=0; --医技单据号 else LS_CFLSH0:=null; --处方流水号 LS_YJDJH0:=0; --医技单据号 end if; LS_SFXMID:=LS_XMBH00; --收费项目id LS_CFID00:=LS_CFMXID;--处方ID或YJ_YWJJ00.ID0000或费用明细ID LS_YPXJXMDJ:=0;--药品最高限价项目单价 LS_YPXJXMSL:=0;--药品最高限价项目数量 LS_YPXJXMJE:=0;--药品最高限价费用合计金额 LS_HJJETEMP:=0;--项目金额临时变量 ls_SFTHML:=0; LS_BKEH83:=null;--国家标准对应编码 LS_BKEH05:=null;--医保备用1 LS_BKEH06:=null;--医保备用2 LS_BAKXML:=null;--HIS备用字段(xml格式)后续扩展 LS_YYSFXM_BKEH83:=null;--医院收费项目:医保国家标准编码 LS_YBSFDY_BKEH83:=null;--医院收费对应:医保国家标准编码 LS_YBSFXM_BKEH83:=null;--医保收费项目:医保国家标准编码 LS_YBSFDY_MZZYBZ:='2';--医院收费对应:门诊住院标志 0门诊,1住院,2门诊住院都可用 LS_YPXJCFBZ :='0';--药品最高限价拆分标识 0:不拆分 1:拆分(数量不变,单价=最高限价 超过独立收费生成一条) 2:拆分(数量不变,单价=最高限价 超过原药品项目非医保) LS_CFYJXMDJ:=LS_XMDJ00;--处方医技原项目单价 LS_CFYJXMSL:=ls_XMSL00;--处方医技原项目数量 LS_CFYJHJJE:=LS_CFYJHJJE;--处方医技合计金额 LS_KDKS00:=LS_KDKS00;--开单科室编码 LS_KDKSMC:=substrb(SF_XT_GETBM_BMBM00(LS_KDKS00,'0'),1,50);--开单科室名称 LS_KDYS00:=LS_KDYS00;--开单医生编码 LS_KDYSXM:=substrb(SF_XT_GETBM_YGBM00(LS_KDYS00,'0'),1,50);--开单医生姓名 LS_ZXKS00:=LS_ZXKS00;--执行科室编码 LS_ZXKSMC:=substrb(SF_XT_GETBM_BMBM00(LS_ZXKS00,'0'),1,50);--执行科室名称 LS_ZXYS00:=LS_ZXYS00;--执行医生编码 LS_ZXYSXM:=substrb(SF_XT_GETBM_YGBM00(LS_ZXYS00,'0'),1,50);--执行医生姓名 LS_YZH000:=LS_YZH000;--医嘱号 LS_YPPLMC:=LS_YPPLMC;--药品频率名称 Pro_Out_ZXZT00:=null;--[出参]:执行状态 0:失败 1:成功 Pro_Out_ERRMSG:=null;--[出参]:错误信息 Pro_Out_OUTXML:=null;--[出参]:备用出参xml格式输出 --2021.04.01药品开始判断金额差额(单价*数量同处方明细表自付金额)--begin--- /* --单笔 石韦 0.0588*105=6.174=6.17 石韦 0.0588*105=6.174=6.17 合计:6.17+6.17=12.34 --先汇总 石韦 0.0588*210=12.348=12.35 */ --if LS_FLAG00 in ('1') and nvl(LS_CFYJHJJE,0)>0 and round(nvl(ls_HJJE00,0),2)<>round(nvl(LS_CFYJHJJE,0),2) then -- LS_HJJE00:=LS_CFYJHJJE; --处方以及合计金额 --end if; --2021.04.01药品开始判断金额差额(单价*数量同处方明细表自付金额)--end--- --项目数量*单价不等于总金额重新算单价 if round(LS_XMSL00*LS_XMDJ00,2)<>round(LS_HJJE00,2) and nvl(LS_XMSL00,0)<>0 then LS_XMDJ00 := round(LS_HJJE00/LS_XMSL00,4); end if; if (XT_ZDYBYPMLXYSPBR>0) and (ls_FLAG00='1') then ls_SFTHML:=SF_XT_GETFYBMLBH('0',LS_BRID00,ls_XMBH00,0);--返回0不替换 1替换 else ls_SFTHML:=0; end if; --MZSF-20190329-001 begin LS_COU:=0; if ls_FLAG00='0' then select count(*) into LS_COU from BM_TYZD00 where ZDMC00='门诊自费发送项目' and DJ0000=ls_XMBH00 and instr(','||MC0000||',',','||ls_YBZXLB||',')>0 AND YXBZ00='1'; select count(*) into LS_COU2 from BM_TYZD00 where ZDMC00='门诊自费发送项目(按医保分中心类别)' and DJ0000=ls_XMBH00 and trim(MC0000)=trim(ls_YBLB00) AND YXBZ00='1'; end if; --MZSF-20190329-001 end if ls_ZFFSBZ='Y' or LS_COU>0 or LS_COU2>0 then --for MZYS-20131016-001 ls_SFTHML:=1; end if; LS_SFXMMC:=ls_XMMC00; --已扣费未结算--医保业务处理---begin--- if ls_FBBH00=3 then select a.XMMC00,a.BH0000,C.SFYBXM,nvl(C.SFSX00,0),D.XMMC00,Substrb(C.YBXMBH,1,50),Substrb(a.CBXMBH,1,20),C.ZFBL00,c.YBLB00,c.SFYP00, D.XMDW00,D.XMDW01,D.YBJSDJ,D.YBZGDJ,D.YBJSDJ1,D.YBZGDJ1,C.BKEH83,D.BKEH83 as YBSFXM_BKEH83, nvl(C.MZZYBZ,'2')MZZYBZ,upper(substrb(nvl(C.BKEA96,'Y'),1,1)) as BKEA96 into ls_FPXMMC,ls_FPXMBH,ls_SFYBXM,ls_YBXMSX,ls_YBXMMC,ls_YBXMBH,ls_CBXMBH,ls_YBZFBL,ls_YBXMLB,ls_SFYP00, LS_YBDDW0,LS_YBXDW0,LS_YBJSDJ,LS_YBZGDJ,LS_YBJSDJ1,LS_YBZGDJ1,LS_YBSFDY_BKEH83,LS_YBSFXM_BKEH83, LS_YBSFDY_MZZYBZ,LS_YBSFDY_BKEA96 from BM_YBFPXM A,VW_BM_YBSFDY C,BM_YBSFXM D where a.BH0000 = C.YBMZFP and a.YBZXLB = C.YBZXLB and C.YBBRLB = ls_YBBRLB and C.SFXMID = LS_SFXMID and C.YBZXLB = D.YBZXLB(+) and C.YBXMBH = D.XMBH00(+) and C.SFYP00 = decode(ls_FLAG00,'0','N','Y')--是否药品,'0'费用,'1'零散处方,'2'医嘱处方 and a.YBZXLB = ls_YBZXLB and a.SYBZ00 <> '2' ; --非住院 --2021.08.07 SFYBXM改为取BM_YBSFDY.BKEA96 --是否新医保 0:否 1:是 if LS_SFXYB0='1' then if LS_YBZXLB_MXCSFSYBMSC is not null then if instrb('|'||LS_YBZXLB_MXCSFSYBMSC||'|','|'||trim(LS_YBZXLB)||'|')>0 then LS_SFYBXM:=LS_SFYBXM; --某些费别,比如两费保健等等,取BM_YBSFDY.SFYBXM else LS_SFYBXM:=LS_YBSFDY_BKEA96; end if; else LS_SFYBXM:=LS_YBSFDY_BKEA96; end if; else LS_SFYBXM:=LS_SFYBXM; --旧医保根据SFYB00控制 end if; LS_BKEH83:=LS_YBSFDY_BKEH83; --0:项目 1:药品--begin-- if LS_FLAG00='0' then begin select BKEH83 into LS_YYSFXM_BKEH83 from BM_YYSFXM B where B.SFXMID=ls_XMBH00 and b.TZRQ00 is null; exception when others then LS_YYSFXM_BKEH83:=null; end; --GetType_bkeh83:新医保接口bkeh83(国家标准对应编码)取值方式 1:优先取BM_YBSFDY(为空取BM_YYSFXM),0:优先取BM_YYSFXM(为空取BM_YBSFDY) if LS_GetType_bkeh83='0' then LS_BKEH83:=nvl(nvl(LS_YYSFXM_BKEH83,LS_YBSFXM_BKEH83),LS_YBSFDY_BKEH83); --0:优先取BM_YYSFXM(为空取BM_YBSFDY) else LS_BKEH83:=nvl(LS_YBSFDY_BKEH83,nvl(LS_YYSFXM_BKEH83,LS_YBSFXM_BKEH83)); --1:优先取BM_YBSFDY(为空取BM_YYSFXM) end if; end if; --0:项目 1:药品--end-- if LS_YBSFDY_MZZYBZ in ('1') then --门诊住院标志 0门诊,1住院,2门诊住院都可用 LS_SFTHML:=1; --0 不替换 1替换 LS_SFYBXM:='N'; LS_YBZFBL:=1; end if; --药品医保项目单位转化--begin--- if (LS_YBXJQY='Y') and (LS_FLAG00 in ('1','2')) and (nvl(LS_XMSL00,0)<>0) then --2024.06.11 改为调用SP_SF_YBJK00_ZGXJCF begin SP_SF_YBJK00_ZGXJCF (LS_BRID00,'2',LS_FLAG00,ad_ID0000,LS_SFXMID,LS_XMMC00,LS_DW0000,LS_CFYJXMSL,LS_CFYJXMDJ,LS_CFYJHJJE,LS_XMSL00,LS_XMDJ00,LS_HJJE00, LS_YBXMBH,LS_YBXMMC,LS_YBXMSX,LS_YBDW00,LS_YBDDW0,LS_YBXDW0,LS_K2J000,LS_M2J000,LS_Z2J000,LS_YB2J00,LS_YBJSDJ,LS_YBZGDJ,LS_YBJSDJ1,LS_YBZGDJ1, LS_YPCWZHFS,'N','',Pro_Out_ZXZT00,LS_YPXJCFBZ,LS_YPXJXMBH,LS_DW0000,LS_XMSL00,LS_XMDJ00,LS_HJJE00,LS_YPXJXMSL,LS_YPXJXMDJ,LS_YPXJXMJE, Pro_Out_ERRMSG,Pro_Out_OUTXML ); if Pro_Out_ZXZT00=0 then as_YHMSG0:=substrb(Pro_Out_ERRMSG,1,200); as_SYSMSG:=as_YHMSG0; return; end if; exception when others then as_YHMSG0:=substrb('药品最高限价拆分拆分异常!错误原因:'||sqlerrm,1,200); as_SYSMSG:=as_YHMSG0; return; end; /* if (trim(LS_DW0000)=trim(LS_YBDDW0)) or (trim(LS_DW0000)=trim(LS_YBXDW0)) then --发药=医保大单位或小单位 LS_DW0000:=LS_DW0000; else if (trim(LS_YBDW00) is not null) and (nvl(LS_YB2J00,0)>0) and (nvl(LS_M2J000,0)>0) then if trim(LS_DW0000)=trim(LS_YBDW00) then LS_DW0000:=LS_YBDW00; else --转成计量单位 LS_DW0000:=LS_YBDW00; LS_HJJE00:=LS_HJJE00; LS_XMSL00:=ceil(LS_XMSL00*100)/100; --保留小数点2位(进位) if round(LS_XMSL00*LS_XMDJ00,2)<>round(LS_HJJE00,2) then --进位后数量*单价<>合计金额重新算单价 LS_XMDJ00 := round(LS_HJJE00/LS_XMSL00,4); end if; end if; end if; end if; --2018.12.27 by zhangyc 增加院内单价和最高限价比较---begin-- if trim(LS_DW0000)=trim(LS_YBDDW0) and nvl(LS_XMDJ00,0)>nvl(LS_YBZGDJ,0) and nvl(LS_YBZGDJ,0)>0 then LS_DW0000:=trim(LS_YBDDW0); LS_HJJE00:=LS_HJJE00; LS_XMDJ00:=nvl(LS_YBZGDJ,0); LS_XMSL00:=round(LS_HJJE00/LS_XMDJ00,4); --2020.01.16 数量保留两位小数位(进位) LS_XMSL00:=ceil(LS_XMSL00*100)/100; --保留小数点2位(进位) if round(LS_XMSL00*LS_XMDJ00,2)<>round(LS_HJJE00,2) then --进位后数量*单价<>合计金额重新算单价 LS_XMDJ00 := round(LS_HJJE00/LS_XMSL00,4); end if; end if; if trim(LS_DW0000)=trim(LS_YBXDW0) and nvl(LS_XMDJ00,0)>nvl(LS_YBZGDJ1,0) and nvl(LS_YBZGDJ1,0)>0 then LS_DW0000:=trim(LS_YBXDW0); LS_HJJE00:=LS_HJJE00; LS_XMDJ00:=nvl(LS_YBZGDJ1,0); LS_XMSL00:=round(LS_HJJE00/LS_XMDJ00,4); --2020.01.16 数量保留两位小数位(进位) LS_XMSL00:=ceil(LS_XMSL00*100)/100; --保留小数点2位(进位) if round(LS_XMSL00*LS_XMDJ00,2)<>round(LS_HJJE00,2) then --进位后数量*单价<>合计金额重新算单价 LS_XMDJ00 := round(LS_HJJE00/LS_XMSL00,4); end if; end if; --2018.12.27 by zhangyc 增加院内单价和最高限价比较---end-- */ end if; --药品医保项目单位转化--end--- if LS_SFXYB0='1' then--是否新医保 0:否 1:是 LS_JX0000:=LS_JX0000;--'剂型'=BM_YPJX00.YBFSBM(BM_YD0000.JXBH00) LS_DCYYDW:=LS_DCYYDW;--'单次用药单位' LS_QYZL00:=LS_QYZL00;--'取药总量';=sin_dos_dscr LS_QYZLDW:=LS_QYZLDW;--'取药总量单位' LS_YLTS00:=LS_YLTS00;--'药量天数' LS_GYTJ00:=LS_GYTJ00;--'给药途径' =BM_YPYF00.YBFSBM=medc_way_dscr LS_YPPL00:=LS_YPPL00;--频率代码=used_frqu_dscr LS_YPYL00:=LS_YPYL00;--剂量+单位 LS_PCMC00:=LS_PCMC00;--频次名称 LS_YPPLMC:=LS_YPPLMC;--药品频率名称 if LS_FLAG00='1' then LS_YPYL00:=substrb(trim(to_char(ls_CSL000,'9999990.00'))||LS_DCYYDW,1,20); LS_YPPLMC:=substrb(nvl(SF_SF_GETPCBM(LS_YPPLMC,LS_CFMXID,'0','1','2'),LS_YPPLMC),1,50); end if; else LS_JX0000:=substrb(SF_XT_GET_FIELD_VALUE('BM_YPJX00','YBFSBM','JXBH00',LS_JX0000,''),1,50);--剂型=BM_YPJX00.YBFSBM LS_DCYYDW:=LS_DCYYDW; --单次用药单位 LS_QYZL00:=LS_QYZL00; --取药总量=sin_dos_dscr LS_QYZLDW:=LS_QYZLDW; --取药总量单位 LS_YLTS00:=LS_YLTS00; --药量天数 LS_GYTJ00:=substrb(SF_XT_GET_FIELD_VALUE('BM_YPYF00','YBFSBM','YPYFMC',LS_GYTJ00,''),1,50); --'给药途径' =BM_YPYF00.YBFSBM=medc_way_dscr LS_YPPL00:=LS_YPPL00;--频率代码=used_frqu_dscr LS_YPYL00:=LS_YPYL00;--剂量+单位 if LS_FLAG00='1' then LS_YPPL00:=substrb(SF_XT_GET_FIELD_VALUE('BM_PC0000','YBPCBM','PCMC00',ls_PCMC00,'9999'),1,6);--频率代码=used_frqu_dscr LS_YPYL00:=substrb(trim(to_char(ls_CSL000,'9999990.00')),1,10);--使用剂量+剂量单位 end if; if ls_YPPL00 is null then ls_YPPL00:='9999'; end if; if ls_YPYL00 is null then ls_YPYL00:='1'; end if; end if; if (ls_YPTS00=0) or (ls_YPTS00 is null) then ls_YPTS00:=1 ; end if; --特殊病种目录外药品是否替换处理 if (ls_SFTHML=0) and (ls_SFYBXM='Y') and (ls_FLAG00='1') and (SF_TSBZXZCFXM='Y') and (as_tsbzbh is not null) and (ls_YBXMBH is not null) then select count(*) into ls_COUNT0 from BM_TSBZXM b, BM_TSBZB0 c where trim(B.XMBH00)=trim(ls_YBXMBH) AND b.BH0000=C.BH0000 and B.YBZXLB=C.YBZXLB and B.YBZXLB=ls_YBZXLB and ( B.BH0000=as_tsbzbh or ( exists (select 1 from VW_YS_TSBZB_GXYTNB L where L.BH0000=as_tsbzbh) and B.BH0000 in (select BH0000 from VW_YS_TSBZB_GXYTNB) ) ) and c.MLXZBZ in ('1','3'); if ls_COUNT0=0 then ls_SFTHML:=1; end if; end if; -----取挂号医生姓名----begin------- If (ls_ZWXM01<>'99999') and (ls_ZWXM00<>ls_ZWXM01 ) and (ls_XMTEMP='99999') then ls_XMTEMP:=ls_ZWXM00; end if; -----取挂号医生姓名----end------- begin select a.BH0000 into LS_YYFPBH from BM_FPXM00 a,BM_YYSFXM b where a.FPXMID=b.MZFPID AND SFXMID=ls_XMBH00; exception when others then LS_YYFPBH:=ls_FPXMBH; end; if (trim(ls_SFXNHFSQZF) = 'Y') and (ls_SFYP00='N') and (LS_YYFPBH<>'04') and (LS_YYFPBH<>'06') then ls_YBXMBH := null; ls_YBZFBL := 1; ls_SFYBXM := 'N'; end if; --如果没有对应,查找BM_YBSFXM本发票记录有没有定义未对应或超标的项目医保接口使用的医保项目编号 -- 如果有定义,使用此定义的医保项目来生成接口文件,如果没有定义,使用'990000000000+医保发票编号方式 if ls_CBXMBH is not null then select a.XMMC00,a.MZFPXM,b.XMMC00,c.XMMC00 into ls_CBXMMC,ls_CBFPBH,ls_CBFPMC,ls_YYFPMC from BM_YBSFXM a,BM_YBFPXM b,BM_FPXM00 c where a.YBZXLB=ls_YBZXLB and a.XMBH00=ls_CBXMBH and a.MZFPXM=b.BH0000 and b.YBZXLB=ls_YBZXLB and b.YYFPXM=c.FPXMID(+); --取院内发票名称 if (ls_SFFSYYFMMC='Y') and (ls_SFYP00='N') then ls_CBFPMC:=ls_YYFPMC; end if; else ls_CBXMMC:=ls_XMMC00; ls_CBXMBH:=substrb(TRIM(ls_YBBHQZ)||ls_FPXMBH,1,20); ls_CBFPBH:=ls_FPXMBH; ls_CBFPMC:=ls_FPXMMC; end if; if ls_SFTHML=1 and SF_MXCSFSYBMSC = 'Y' then ls_YBZFBL:=1; ls_SFYBXM:='N'; ls_YBXMMC:=ls_YBXMMC; ls_YBXMBH:=ls_YBXMBH; ls_FPXMMC:=ls_FPXMMC; ls_FPXMBH:=ls_FPXMBH; else if (ls_YBXMBH is null) or (ls_SFTHML=1) then ls_YBXMMC:=trim(ls_CBXMMC); ls_YBXMBH:=substrb(trim(ls_CBXMBH),1,50); ls_FPXMMC:=trim(ls_CBFPMC); ls_FPXMBH:=trim(ls_CBFPBH); end if; if ls_SFTHML=1 then ls_YBZFBL:=1; ls_SFYBXM:='N'; end if; end if; --如果原来的自付比例错误,要进行修改,保证清单的正确 zhr 2005.02.21 if ls_ZFBL00<>ls_YBZFBL then if ls_FLAG00='0' then Update SF_FYMX00 set ZFBL00=ls_YBZFBL where MXID00=LS_CFMXID; elsif ls_FLAG00='0' then Update YF_MZCFMX set ZFBL00=ls_YBZFBL,YBLB00=ls_YBXMLB where CFID00=LS_CFMXID; end if; ls_ZFBL00:=ls_YBZFBL; end if; ---modify by MZSF-20110713-002---- --一次性材料项目格式是否改为 医保对应项目+(医院收费项目)---厦门同安医院=Y if (ls_YCXCLXMXGS='Y') and (ls_FLAG00='0') and (ls_XMFSGS='N') then select nvl(JSXM00,'0') into ls_JSXM00 FROM BM_YYSFXM where sfxmid=ls_XMBH00; if trim(ls_JSXM00)='2' then ls_YBXMMC:=ls_YBXMMC||'('||ls_XMMC00||')'; end if; end if; --已扣费未结算--医保业务处理---end--- else --已扣费未结算--自费业务处理---begin--- ls_YBXMBH:=ls_XMBH00; ls_YBXMMC:=LS_XMMC00; ls_SFMLXZ:='1'; ls_SFYBXM:='N'; LS_FPXMBH:=''; ls_FPXMMC:=''; if ls_FLAG00 in ('1') then begin select SFXMMC into ls_FPXMMC from BM_YPLB00 where LBBH00=LS_YPDLBH and rownum=1; exception when others then ls_FPXMMC:='其他费'; end; begin select BH0000 into LS_FPXMBH from BM_FPXM00 where XMMC00=ls_FPXMMC and rownum=1; exception when others then LS_FPXMBH:='13'; end; else LS_FPXMBH:=LS_FPBH00; ls_FPXMMC:=LS_FPMC00; end if; if LS_FPXMBH is null then LS_FPXMBH:='13'; end if; if ls_FPXMMC is null then ls_FPXMMC:='其他费'; end if; if ls_FLAG00='1' then begin select YBPCBM into ls_YPPL00 from BM_PC0000 aa where aa.PCMC00=ls_PCMC00 and rownum=1; exception when others then ls_YPPL00:='9999'; end; if ls_YPPL00 is null then ls_YPPL00:='9999'; end if; if ls_YPPL00<>'9999' then ls_YPYL00:=substrb(trim(to_char(ls_CSL000,'9999990.00')),1,10); end if; else ls_YPPL00:='9999'; ls_YPYL00:=substrb(trim(to_char(ls_CSL000,'9999990.00')),1,10); end if; if ls_YPPL00 is null then ls_YPPL00:='9999'; end if; if ls_YPYL00 is null then ls_YPYL00:='1'; end if; if (ls_YPTS00=0) or (ls_YPTS00 is null) then ls_YPTS00:=1 ; end if; --已扣费未结算--自费业务处理---end--- end if; --判断实际单价是否超过医保上线,如果是要拆分成两条记录 if (LS_XMDJ00>LS_YBXMSX) and (ls_YBXMSX>0) and (ls_SFYBXM='Y') and (ls_CGSXSFCF='Y') and (ls_YBXMBH is not null) then --超过上线 拆分成两条记录 LS_CFHAO0:=substrb(SF_SF_GET_FEEDETL_SN(LS_FLAG00,LS_CFHAO0,LS_CFMXID,'0'),1,50);--医院唯一处方号 insert into SF_FYXX00_TEMPMX(MXID00,ID0000,XMBH00,YBXMBH,SFYB00,FPXMMC,YBXMMC,XMMC00,YPNM00, XMGG00,XMDW00,XMDJ00,XMSL00,XMJE00,YSXM00,SFXMID,ZFBL00, YPTS00,YPPL00,YPYL00,YSZJHM,CFHAO0,JX0000,DCYYDW,QYZL00, QYZLDW,YLTS00,GYTJ00,YPCZFL,FPXMBH, CZY000,CZRQ00,CZSJ00,BRID00,FBBH00,YBZXLB, YBLB00,GHID00,GHH000,CFLSH0,CFID00,YJDJH0, DJH000,CXDJH0,JZDH00,JSLX00,XMFL00,CFBZ00, JZJE00,ZFJE00,GFJE00,XJZF00,QTZF00,KFZT00, FLAG00,GZHCID,SFFSHC,HCDBXM,BKEH83,BKEH05,BKEH06,BAKXML,ZFCFBZ, KDYS00,KDYSXM,KDKS00,KDKSMC,ZXKS00,ZXYS00,YZH000,YPPLMC ) select SQ_SF_FYTEMP_MXID00.nextval,ls_ID0000,ls_YBXMBH,ls_YBXMBH,decode(ls_SFMLXZ,0,'Y',ls_SFYBXM),decode(ls_SYFPBH,'Y',ls_FPXMBH,ls_FPXMMC), decode(trim(ls_yblb00),'Z',ls_XMMC00, decode(ls_ybmcfs,'Y', decode(trim(ls_XMFSGS),'N',ls_YBXMMC,substrb(ls_YBXMMC||'('||ls_XMMC00||')',1,50)),1,ls_XMMC00)),LS_SFXMMC,LS_XMBH00, ls_GG0000,ls_DW0000,ls_YBXMSX,ls_XMSL00,round(ls_YBXMSX*ls_XMSL00,2),ls_ZWXM00,LS_SFXMID,ls_ZFBL00, ls_YPTS00,ls_YPPL00,ls_YPYL00,LS_YSZJHM, LS_CFHAO0,LS_JX0000,LS_DCYYDW,LS_QYZL00,LS_QYZLDW,LS_YLTS00,LS_GYTJ00,LS_YPCZFL,LS_FPXMBH, ad_CZY000,LS_CZRQ00,LS_CZSJ00,LS_BRID00,ls_FBBH00,ls_YBZXLB, ls_YBLB00,LS_GHID00,LS_GHH000,LS_CFLSH0,nvl(LS_CFID00,0),nvl(LS_YJDJH0,0), LS_DJH000,nvl(LS_CXDJH0,0),nvl(LS_JZDH00,0),ad_JSLX00,'2',decode(ls_FLAG00,'1','0','1'), LS_JZJE00,LS_XJZF00,LS_GFJE00,LS_XJZF00,LS_GFJE00,'1', LS_FLAG00,LS_GZHCID,LS_SFFSHC,LS_HCDBXM,LS_BKEH83,LS_BKEH05,LS_BKEH06,LS_BAKXML,LS_ZFCFBZ, LS_KDYS00,LS_KDYSXM,LS_KDKS00,LS_KDKSMC,LS_ZXKS00,LS_ZXYS00,LS_YZH000,LS_YPPLMC from dual; --项目拆分后金额 LS_CFHAO0:=substrb(SF_SF_GET_FEEDETL_SN(LS_FLAG00,LS_CFHAO0,LS_CFMXID,'1'),1,50);--医院唯一处方号 insert into SF_FYXX00_TEMPMX(MXID00,ID0000,XMBH00,YBXMBH,SFYB00,FPXMMC,YBXMMC,XMMC00,YPNM00, XMGG00,XMDW00,XMDJ00,XMSL00,XMJE00,YSXM00,SFXMID,ZFBL00, YPTS00,YPPL00,YPYL00,YSZJHM,CFHAO0,JX0000,DCYYDW,QYZL00, QYZLDW,YLTS00,GYTJ00,YPCZFL,FPXMBH, CZY000,CZRQ00,CZSJ00,BRID00,FBBH00,YBZXLB, YBLB00,GHID00,GHH000,CFLSH0,CFID00,YJDJH0, DJH000,CXDJH0,JZDH00,JSLX00,XMFL00,CFBZ00, JZJE00,ZFJE00,GFJE00,XJZF00,QTZF00,KFZT00, FLAG00,GZHCID,SFFSHC,HCDBXM,BKEH83,BKEH05,BKEH06,BAKXML,ZFCFBZ, KDYS00,KDYSXM,KDKS00,KDKSMC,ZXKS00,ZXYS00,YZH000,YPPLMC ) select SQ_SF_FYTEMP_MXID00.nextval,ls_ID0000,ls_CBXMBH,ls_CBXMBH,'N',decode(ls_SYFPBH,'Y',ls_CBFPBH,ls_CBFPMC),ls_CBXMMC,LS_SFXMMC,LS_XMBH00, ls_GG0000,ls_DW0000,(ls_XMDJ00-ls_YBXMSX),ls_XMSL00,round((ls_XMDJ00-ls_YBXMSX)*ls_XMSL00,2),ls_ZWXM00,LS_SFXMID,ls_ZFBL00, ls_YPTS00,ls_YPPL00,ls_YPYL00,LS_YSZJHM, LS_CFHAO0,LS_JX0000,LS_DCYYDW,LS_QYZL00,LS_QYZLDW,LS_YLTS00,LS_GYTJ00,LS_YPCZFL,LS_FPXMBH, ad_CZY000,LS_CZRQ00,LS_CZSJ00,LS_BRID00,ls_FBBH00,ls_YBZXLB, ls_YBLB00,LS_GHID00,LS_GHH000,LS_CFLSH0,nvl(LS_CFID00,0),nvl(LS_YJDJH0,0), LS_DJH000,nvl(LS_CXDJH0,0),nvl(LS_JZDH00,0),ad_JSLX00,'2',decode(ls_FLAG00,'1','0','1'), 0 as JZJE00,0 as XJZF00,0 as GFJE00,0 as XJZF00,0 as GFJE00,'1', LS_FLAG00,LS_GZHCID,LS_SFFSHC,LS_HCDBXM,LS_BKEH83,LS_BKEH05,LS_BKEH06,LS_BAKXML,LS_ZFCFBZ, LS_KDYS00,LS_KDYSXM,LS_KDKS00,LS_KDKSMC,LS_ZXKS00,LS_ZXYS00,LS_YZH000,LS_YPPLMC from dual; else --2021.04.01 SF_FYXX00_TEMPMX.XMJE00 中round(ls_XMDJ00*ls_XMSL00,2)改为round(LS_HJJE00,2) LS_CFHAO0:=substrb(SF_SF_GET_FEEDETL_SN(LS_FLAG00,LS_CFHAO0,LS_CFMXID,'0'),1,50);--医院唯一处方号 insert into SF_FYXX00_TEMPMX(MXID00,ID0000,XMBH00,YBXMBH,SFYB00,FPXMMC,YBXMMC,XMMC00,YPNM00, XMGG00,XMDW00,XMDJ00,XMSL00,XMJE00,YSXM00,SFXMID,ZFBL00, YPTS00,YPPL00,YPYL00,YSZJHM,CFHAO0,JX0000,DCYYDW,QYZL00, QYZLDW,YLTS00,GYTJ00,YPCZFL,FPXMBH, CZY000,CZRQ00,CZSJ00,BRID00,FBBH00,YBZXLB, YBLB00,GHID00,GHH000,CFLSH0,CFID00,YJDJH0, DJH000,CXDJH0,JZDH00,JSLX00,XMFL00,CFBZ00, JZJE00,ZFJE00,GFJE00,XJZF00,QTZF00,KFZT00, FLAG00,GZHCID,SFFSHC,HCDBXM,BKEH83,BKEH05,BKEH06,BAKXML,ZFCFBZ, KDYS00,KDYSXM,KDKS00,KDKSMC,ZXKS00,ZXYS00,YZH000,YPPLMC ) select SQ_SF_FYTEMP_MXID00.nextval,LS_ID0000,ls_YBXMBH,ls_YBXMBH,decode(ls_SFMLXZ,0,'Y',ls_SFYBXM),decode(ls_SYFPBH,'Y',ls_FPXMBH,ls_FPXMMC), decode(trim(ls_yblb00),'Z',ls_XMMC00, decode(ls_ybmcfs,'Y', decode(trim(ls_XMFSGS),'N',ls_YBXMMC,substrb(ls_YBXMMC||'('||ls_XMMC00||')',1,50)),ls_XMMC00)),LS_SFXMMC,LS_XMBH00, ls_GG0000,ls_DW0000,ls_XMDJ00,ls_XMSL00,round(LS_HJJE00,2),ls_ZWXM00,LS_SFXMID,ls_ZFBL00, ls_YPTS00,ls_YPPL00,ls_YPYL00,LS_YSZJHM, LS_CFHAO0,LS_JX0000,LS_DCYYDW,LS_QYZL00,LS_QYZLDW,LS_YLTS00,LS_GYTJ00,LS_YPCZFL,LS_FPXMBH, ad_CZY000,LS_CZRQ00,LS_CZSJ00,LS_BRID00,ls_FBBH00,ls_YBZXLB, ls_YBLB00,LS_GHID00,LS_GHH000,LS_CFLSH0,LS_CFID00,LS_YJDJH0, LS_DJH000,nvl(LS_CXDJH0,0),nvl(LS_JZDH00,0),ad_JSLX00,'2',decode(ls_FLAG00,'1','0','1'), LS_JZJE00,LS_XJZF00,LS_GFJE00,LS_XJZF00,LS_GFJE00,'1', LS_FLAG00,LS_GZHCID,LS_SFFSHC,LS_HCDBXM,LS_BKEH83,LS_BKEH05,LS_BKEH06,LS_BAKXML,LS_ZFCFBZ, LS_KDYS00,LS_KDYSXM,LS_KDKS00,LS_KDKSMC,LS_ZXKS00,LS_ZXYS00,LS_YZH000,LS_YPPLMC from dual; end if; --原药品的对照编码和名称(2:拆分(数量不变,单价=最高限价 超过原药品项目非医保))--begin--- if LS_YPXJCFBZ in ('2') then LS_YPXJXMDJ:=LS_YPXJXMDJ; --药品最高限价项目单价 LS_YPXJXMSL:=LS_YPXJXMSL; --药品最高限价项目数量 LS_YPXJXMJE:=LS_YPXJXMJE; --药品最高限价费用合计金额 LS_YPXJYBDW:=trim(nvl(ls_DW0000,'无')); --药品最高限价医保项目单位 LS_YPXJSFYB:='N'; --药品最高限价是否医保项目 --SF_MXCSFSYBMSC控制新医保明细上传项目是否按原编码上传 Y:原编码 N:原来模式 if SF_MXCSFSYBMSC='Y' then LS_YPXJFPBH:=substrb(trim(LS_FPXMBH),1,2); --药品最高限价医保发票编号 LS_YPXJFPMC:=substrb(trim(ls_FPXMMC),1,40); --药品最高限价医保发票名称 LS_YPXJYBBH:=substrb(trim(LS_YBXMBH),1,50); --药品最高限价医保项目编号 LS_YPXJYBMC:=substrb(trim(LS_YBXMMC),1,100); --药品最高限价医保项目名称 else LS_YPXJFPBH:=substrb(nvl(trim(LS_CBFPBH),trim(LS_FPXMBH)),1,2); --药品最高限价医保发票编号 LS_YPXJFPMC:=substrb(nvl(trim(LS_CBFPMC),trim(ls_FPXMMC)),1,40); --药品最高限价医保发票名称 LS_YPXJYBBH:=substrb(nvl(trim(LS_CBXMBH),trim(LS_YBXMBH)),1,50); --药品最高限价医保项目编号 LS_YPXJYBMC:=substrb(nvl(trim(LS_CBXMMC),trim(LS_YBXMMC)),1,100); --药品最高限价医保项目名称 end if; if nvl(LS_YPXJXMJE,0)<>0 then LS_CFHAO0:=substrb(SF_SF_GET_FEEDETL_SN('1',LS_CFLSH0,LS_CFID00,'1'),1,50);--医院唯一处方号 insert into SF_FYXX00_TEMPMX( MXID00,ID0000,XMBH00,YBXMBH,SFYB00,FPXMMC,YBXMMC,XMMC00,YPNM00, XMGG00,XMDW00,XMDJ00,XMSL00,XMJE00,YSXM00,SFXMID,ZFBL00, YPTS00,YPPL00,YPYL00,YSZJHM,CFHAO0,JX0000,DCYYDW,QYZL00, QYZLDW,YLTS00,GYTJ00,YPCZFL,FPXMBH, CZY000,CZRQ00,CZSJ00,BRID00,FBBH00,YBZXLB, YBLB00,GHID00,GHH000,CFLSH0,CFID00,YJDJH0, DJH000,CXDJH0,JZDH00,JSLX00,XMFL00,CFBZ00, JZJE00,ZFJE00,GFJE00,XJZF00,QTZF00,KFZT00, FLAG00,GZHCID,SFFSHC,HCDBXM,BKEH83,BKEH05,BKEH06,BAKXML,ZFCFBZ, KDYS00,KDYSXM,KDKS00,KDKSMC,ZXKS00,ZXYS00,YZH000,YPPLMC ) select SQ_SF_FYTEMP_MXID00.nextval,LS_ID0000,LS_YPXJYBBH,LS_YPXJYBBH,LS_YPXJSFYB,LS_YPXJFPMC,LS_YPXJYBMC,LS_YPXJYBMC,LS_XMBH00, LS_GG0000,LS_YPXJYBDW,LS_YPXJXMDJ,LS_YPXJXMSL,LS_YPXJXMJE,LS_ZWXM00,LS_SFXMID,1 as ZFBL00, 1 as YPTS00,LS_YPPL00,LS_YPYL00,LS_YSZJHM, LS_CFHAO0,LS_JX0000,LS_DCYYDW,1 as QYZL00,LS_QYZLDW,1 as YLTS00,LS_GYTJ00,LS_YPCZFL,LS_YPXJFPBH, ad_CZY000,LS_CZRQ00,LS_CZSJ00,LS_BRID00,LS_FBBH00,LS_YBZXLB, ls_YBLB00,LS_GHID00,LS_GHH000,LS_CFLSH0,nvl(LS_CFID00,0),nvl(LS_YJDJH0,0), LS_DJH000,nvl(LS_CXDJH0,0),nvl(LS_JZDH00,0),ad_JSLX00,'0',decode(ls_FLAG00,'1','0','1'), 0 as JZJE00,0 as XJZF00,0 as GFJE00,0 as XJZF00,0 as GFJE00,'1', LS_FLAG00,LS_GZHCID,LS_SFFSHC,LS_HCDBXM,LS_BKEH83,LS_BKEH05,LS_BKEH06,LS_BAKXML,LS_ZFCFBZ, LS_KDYS00,LS_KDYSXM,LS_KDKS00,LS_KDKSMC,LS_ZXKS00,LS_ZXYS00,LS_YZH000,LS_YPPLMC from dual; end if; end if; --原药品的对照编码和名称(2:拆分(数量不变,单价=最高限价 超过原药品项目非医保))--end--- exception when no_data_found then as_YHMSG0:='查找不到医保对应记录,请与系统管理员联系!'; if ls_FLAG00='0' then as_SYSMSG:=SQLERRM||'SFXMID='||to_char(ls_XMBH00)||',XMMC00='||LS_XMMC00||',MXID00='||to_char(LS_CFMXID)||'查找不到医保对应记录!'; else as_SYSMSG:=SQLERRM||'YPNM00='||to_char(ls_XMBH00)||',XMMC00='||LS_XMMC00||',CFID00='||to_char(LS_CFMXID)||'查找不到医保对应记录!'; end if; rollback; return; when others then --说明是药品,注意有多条记录 as_YHMSG0:='医疗收费项目生成错误,请速与系统管理员联系!'; if ls_FLAG00='0' then as_SYSMSG:=sqlerrm||'SFXMID='||to_char(ls_XMBH00)||',XMMC00='||LS_XMMC00||',MXID00='||to_char(LS_CFMXID)||'查找不到医保对应记录!'; else as_SYSMSG:=sqlerrm||'YPNM00='||to_char(ls_XMBH00)||',XMMC00='||LS_XMMC00||',CFID00='||to_char(LS_CFMXID)||'查找不到医保对应记录!'; end if; rollback; return; end; end loop; close CUR_SF_FYMX00_MXID00; ---已扣费未结算业务处理---开始整理数据--end-- --已记账金额 select nvl(sum(XMJE00),0) into LS_YJZJE0 from SF_FYXX00_TEMPMX where BRID00=LS_BRID00 and ID0000=ls_ID0000 and KFZT00='1'; Select count(1) into LS_COUNT0 from SF_FYXX00_TEMPMX where BRID00=LS_BRID00 and ID0000=ls_ID0000; update SF_FYXX00_TEMPMX set FLAG00='1' where BRID00=LS_BRID00 and ID0000=ls_ID0000 and trim(CFLSH0) is not null and FLAG00='0' and CFBZ00='0'; if LS_COUNT0=0 then ad_NEWID0:=0; else --重新整理数据--begin-- select SQ_SF_FYXX00_TEMP00_ID0000.nextval into ad_NEWID0 from dual; --把单号插入到临时表 insert into SF_FYXX00_DJH000 ( ID0000,BRID00,GHID00,GHH000,CFLSH0, CFID00,YJDJH0,DJH000,XMFL00,YPNM00, SFXMID,CFBZ00,KFZT00,JZDH00,ZFCFBZ ) select distinct ad_NEWID0,BRID00,GHID00,GHH000,CFLSH0, CFID00,YJDJH0,DJH000,XMFL00,YPNM00, SFXMID,CFBZ00,KFZT00,JZDH00,ZFCFBZ from SF_FYXX00_TEMPMX where BRID00=LS_BRID00 and ID0000 = LS_ID0000; if LS_FSYBYPFYSFRQHZ='0' then --汇总 insert into SF_FYXX00_TEMPMX(MXID00,ID0000,XMBH00,YBXMBH,SFYB00,FPXMMC,YBXMMC,XMMC00,YPNM00, XMGG00,XMDW00,XMDJ00,XMSL00,XMJE00,YSXM00,SFXMID,ZFBL00, YPTS00,YPPL00,YPYL00,YSZJHM,CFHAO0,JX0000,DCYYDW,QYZL00, QYZLDW,YLTS00,GYTJ00,YPCZFL,FPXMBH, CZY000,CZRQ00,CZSJ00,BRID00,FBBH00,YBZXLB, YBLB00,GHID00,GHH000,CFLSH0,CFID00,YJDJH0, DJH000,CXDJH0,JZDH00,JSLX00,XMFL00,CFBZ00, JZJE00,ZFJE00,GFJE00,XJZF00,QTZF00,KFZT00, SFYDJ0,FLAG00,GZHCID,SFFSHC,HCDBXM,BKEH83,BKEH05,BKEH06,BAKXML,ZFCFBZ, KDYS00,KDYSXM,KDKS00,KDKSMC,ZXKS00,ZXYS00,YZH000,YPPLMC ) select max(MXID00),ad_NEWID0,XMBH00,YBXMBH,SFYB00,FPXMMC,trim(YBXMMC),XMMC00,YPNM00, max(XMGG00),max(XMDW00),XMDJ00,Sum(XMSL00),Sum(XMJE00),max(YSXM00),max(SFXMID),max(ZFBL00), max(YPTS00),max(YPPL00),max(YPYL00),max(YSZJHM),max(CFHAO0),max(JX0000),max(DCYYDW),max(QYZL00), max(QYZLDW),max(YLTS00),max(GYTJ00),max(YPCZFL),FPXMBH, max(CZY000),max(CZRQ00),max(CZSJ00),BRID00,FBBH00,YBZXLB, YBLB00,GHID00,GHH000,max(CFLSH0),max(CFID00),max(YJDJH0), max(DJH000),max(CXDJH0),max(JZDH00),max(JSLX00),max(XMFL00),max(CFBZ00), Sum(JZJE00),Sum(ZFJE00),Sum(GFJE00),Sum(XJZF00),Sum(QTZF00),max(KFZT00), max(SFYDJ0),max(FLAG00),max(GZHCID),max(SFFSHC),max(HCDBXM),max(BKEH83),max(BKEH05),max(BKEH06),max(BAKXML),ZFCFBZ, max(KDYS00),max(KDYSXM),max(KDKS00),max(KDKSMC),max(ZXKS00),max(ZXYS00),max(YZH000),max(YPPLMC) from SF_FYXX00_TEMPMX where BRID00=LS_BRID00 and ID0000 = LS_ID0000 group by XMBH00,YBXMBH,SFYB00,FPXMMC,YBXMMC,XMMC00,YPNM00, XMDJ00,FPXMBH,BRID00,FBBH00,YBZXLB,YBLB00,GHID00,GHH000,ZFCFBZ; else --非药品汇总 insert into SF_FYXX00_TEMPMX(MXID00,ID0000,XMBH00,YBXMBH,SFYB00,FPXMMC,YBXMMC,XMMC00,YPNM00, XMGG00,XMDW00,XMDJ00,XMSL00,XMJE00,YSXM00,SFXMID,ZFBL00, YPTS00,YPPL00,YPYL00,YSZJHM,CFHAO0,JX0000,DCYYDW,QYZL00, QYZLDW,YLTS00,GYTJ00,YPCZFL,FPXMBH, CZY000,CZRQ00,CZSJ00,BRID00,FBBH00,YBZXLB, YBLB00,GHID00,GHH000,CFLSH0,CFID00,YJDJH0, DJH000,CXDJH0,JZDH00,JSLX00,XMFL00,CFBZ00, JZJE00,ZFJE00,GFJE00,XJZF00,QTZF00,KFZT00, SFYDJ0,FLAG00,GZHCID,SFFSHC,HCDBXM,BKEH83,BKEH05,BKEH06,BAKXML,ZFCFBZ, KDYS00,KDYSXM,KDKS00,KDKSMC,ZXKS00,ZXYS00,YZH000,YPPLMC ) select max(MXID00),ad_NEWID0,XMBH00,YBXMBH,SFYB00,FPXMMC,trim(YBXMMC),XMMC00,max(YPNM00), max(XMGG00),max(XMDW00),XMDJ00,Sum(XMSL00),Sum(XMJE00),max(YSXM00),SFXMID,max(ZFBL00), max(YPTS00),max(YPPL00),max(YPYL00),max(YSZJHM),max(CFHAO0),max(JX0000),max(DCYYDW),max(QYZL00), max(QYZLDW),max(YLTS00),max(GYTJ00),max(YPCZFL),FPXMBH, max(CZY000),max(CZRQ00),max(CZSJ00),BRID00,FBBH00,YBZXLB, YBLB00,GHID00,GHH000,max(CFLSH0),max(CFID00),max(YJDJH0), max(DJH000),max(CXDJH0),max(JZDH00),max(JSLX00),max(XMFL00),max(CFBZ00), Sum(JZJE00),Sum(ZFJE00),Sum(GFJE00),Sum(XJZF00),Sum(QTZF00),max(KFZT00), max(SFYDJ0),FLAG00,max(GZHCID),max(SFFSHC),max(HCDBXM),max(BKEH83),max(BKEH05),max(BKEH06),max(BAKXML),ZFCFBZ, max(KDYS00),max(KDYSXM),max(KDKS00),max(KDKSMC),max(ZXKS00),max(ZXYS00),max(YZH000),max(YPPLMC) from SF_FYXX00_TEMPMX where BRID00=LS_BRID00 and ID0000 = LS_ID0000 and nvl(FLAG00,'0') not in ('1') group by FLAG00,SFXMID,XMBH00,YBXMBH,SFYB00,FPXMMC,YBXMMC,XMMC00, XMDJ00,FPXMBH,BRID00,FBBH00,YBZXLB,YBLB00,GHID00,GHH000,ZFCFBZ; --药品按处方号汇总 insert into SF_FYXX00_TEMPMX(MXID00,ID0000,XMBH00,YBXMBH,SFYB00,FPXMMC,YBXMMC,XMMC00,YPNM00, XMGG00,XMDW00,XMDJ00,XMSL00,XMJE00,YSXM00,SFXMID,ZFBL00, YPTS00,YPPL00,YPYL00,YSZJHM,CFHAO0,JX0000,DCYYDW,QYZL00, QYZLDW,YLTS00,GYTJ00,YPCZFL,FPXMBH, CZY000,CZRQ00,CZSJ00,BRID00,FBBH00,YBZXLB, YBLB00,GHID00,GHH000,CFLSH0,CFID00,YJDJH0, DJH000,CXDJH0,JZDH00,JSLX00,XMFL00,CFBZ00, JZJE00,ZFJE00,GFJE00,XJZF00,QTZF00,KFZT00, SFYDJ0,FLAG00,GZHCID,SFFSHC,HCDBXM,BKEH83,BKEH05,BKEH06,BAKXML,ZFCFBZ, KDYS00,KDYSXM,KDKS00,KDKSMC,ZXKS00,ZXYS00,YZH000,YPPLMC ) select max(MXID00),ad_NEWID0,XMBH00,YBXMBH,SFYB00,FPXMMC,trim(YBXMMC),XMMC00,max(YPNM00), max(XMGG00),max(XMDW00),XMDJ00,Sum(XMSL00),Sum(XMJE00),max(YSXM00),SFXMID,max(ZFBL00), max(YPTS00),max(YPPL00),max(YPYL00),max(YSZJHM),max(CFHAO0),max(JX0000),max(DCYYDW),max(QYZL00), max(QYZLDW),max(YLTS00),max(GYTJ00),max(YPCZFL),FPXMBH, max(CZY000),max(CZRQ00),max(CZSJ00),BRID00,FBBH00,YBZXLB, YBLB00,GHID00,GHH000,CFLSH0,max(CFID00),YJDJH0, DJH000,max(CXDJH0),max(JZDH00),max(JSLX00),max(XMFL00),max(CFBZ00), Sum(JZJE00),Sum(ZFJE00),Sum(GFJE00),Sum(XJZF00),Sum(QTZF00),max(KFZT00), max(SFYDJ0),FLAG00,max(GZHCID),max(SFFSHC),max(HCDBXM),max(BKEH83),max(BKEH05),max(BKEH06),max(BAKXML),ZFCFBZ, max(KDYS00),max(KDYSXM),max(KDKS00),max(KDKSMC),max(ZXKS00),max(ZXYS00),max(YZH000),max(YPPLMC) from SF_FYXX00_TEMPMX where BRID00=LS_BRID00 and ID0000 = LS_ID0000 and nvl(FLAG00,'0') in ('1') group by FLAG00,SFXMID,XMBH00,YBXMBH,SFYB00,FPXMMC,YBXMMC,XMMC00, XMDJ00,FPXMBH,BRID00,FBBH00,YBZXLB,YBLB00,GHID00,GHH000,CFLSH0,YJDJH0,DJH000,ZFCFBZ; end if; update SF_FYXX00_TEMPMX set FLAG00='1' where BRID00=LS_BRID00 and ID0000=ad_NEWID0 and trim(CFLSH0) is not null and FLAG00='0' and CFBZ00='0'; --整理数据到主表 insert into SF_FYXX00_TEMP00 (ID0000,CZY000,CZRQ00,CZSJ00,BRID00,GHID00,GHH000,FBBH00,YBZXLB,YBLB00, ZHZYE0,YJZJE0,HJJE00,JZJE00,ZFJE00,GFJE00,XJZF00,QTZF00,BRXM00 ) select ad_NEWID0,ad_CZY000,LS_CZRQ00,LS_CZSJ00,LS_BRID00,LS_GHID00,LS_GHH000,ls_FBBH00,ls_YBZXLB,ls_YBLB00, LS_ZHZYE0,LS_YJZJE0,sum(XMJE00),sum(JZJE00),sum(XMJE00),sum(GFJE00),sum(XJZF00),sum(QTZF00),LS_BRXM00 from SF_FYXX00_TEMPMX where BRID00=LS_BRID00 and ID0000=ad_NEWID0; --删除临时数据 delete SF_FYXX00_TEMPMX where BRID00=LS_BRID00 and ID0000=ls_ID0000; end if; --重新整理数据--end-- --增加高值耗材发送功能 by MZSF-20150512-001 if LS_HCJKQY='Y' then select count(1)into LS_COUNT0 from SF_FYXX00_TEMPMX where ID0000=ad_NEWID0 and GZHCID>0 and nvl(SFFSHC,'1')='1' and nvl(HCDBXM,'0')='0'; --插入耗材打包项目 if LS_COUNT0>0 then LS_CFHAO0:=substrb(SF_SF_GET_FEEDETL_SN(null,null,null,'2'),1,50);--医院唯一处方号 insert into SF_FYXX00_TEMPMX(MXID00,ID0000,XMBH00,YBXMBH,SFYB00,FPXMMC,YBXMMC,XMMC00,YPNM00, XMGG00,XMDW00,XMDJ00,XMSL00,XMJE00,YSXM00,SFXMID,ZFBL00, YPTS00,YPPL00,YPYL00,YSZJHM,CFHAO0,JX0000,DCYYDW,QYZL00, QYZLDW,YLTS00,GYTJ00,YPCZFL,FPXMBH, CZY000,CZRQ00,CZSJ00,BRID00,FBBH00,YBZXLB, YBLB00,GHID00,GHH000,CFLSH0,CFID00,YJDJH0, DJH000,CXDJH0,JZDH00,JSLX00,XMFL00,CFBZ00, JZJE00,ZFJE00,GFJE00,XJZF00,QTZF00,KFZT00, SFYDJ0,FLAG00,GZHCID,SFFSHC,HCDBXM,BKEH83,BKEH05,BKEH06,BAKXML,ZFCFBZ, KDYS00,KDYSXM,KDKS00,KDKSMC,ZXKS00,ZXYS00,YZH000,YPPLMC ) select max(MXID00),ad_NEWID0,max(XMBH00),max(YBXMBH),max(SFYB00),max(FPXMMC),max(YBXMMC),max(XMMC00),max(YPNM00), max(XMGG00),max(XMDW00),Sum(XMJE00),1,Sum(XMJE00),max(YSXM00),max(SFXMID),max(ZFBL00), max(YPTS00),max(YPPL00),max(YPYL00),max(YSZJHM),LS_CFHAO0,max(JX0000),max(DCYYDW),max(QYZL00), max(QYZLDW),max(YLTS00),max(GYTJ00),max(YPCZFL),max(FPXMBH), max(CZY000),max(CZRQ00),max(CZSJ00),BRID00,FBBH00,YBZXLB, YBLB00,GHID00,GHH000,max(CFLSH0),max(CFID00),max(YJDJH0), max(DJH000),max(CXDJH0),max(JZDH00),max(JSLX00),max(XMFL00),max(CFBZ00), Sum(JZJE00),Sum(ZFJE00),Sum(GFJE00),Sum(XJZF00),Sum(QTZF00),max(KFZT00), max(SFYDJ0),max(FLAG00),GZHCID,'1','1',max(BKEH83),max(BKEH05),max(BKEH06),max(BAKXML),max(ZFCFBZ), max(KDYS00),max(KDYSXM),max(KDKS00),max(KDKSMC),max(ZXKS00),max(ZXYS00),max(YZH000),max(YPPLMC) from SF_FYXX00_TEMPMX where BRID00=LS_BRID00 and ID0000 = ad_NEWID0 and GZHCID>0 and nvl(SFFSHC,'1')='1' and nvl(HCDBXM,'0')='0' group by BRID00,FBBH00,YBZXLB,YBLB00,GHID00,GHH000,GZHCID; --修改打包项目的编码 update SF_FYXX00_TEMPMX A set (A.YBXMBH,A.YBXMMC,A.XMBH00,A.XMMC00,A.XMDW00) =(select B.HCDBBM,B.HCDBMC,B.HCDBBM as XMBH00,B.HCDBMC as XMMC00, B.DW0000 from BM_GZHCFL B where B.GZHCID=A.GZHCID and rownum=1) Where BRID00=LS_BRID00 and ID0000=ad_NEWID0 and A.GZHCID>0 and nvl(A.SFFSHC,'1')='1' and nvl(A.HCDBXM,'0')='1'; --把对应的明细数量和金额改成0 Update SF_FYXX00_TEMPMX set XMDJ00=0,XMJE00=0,JZJE00=0,ZFJE00=0,GFJE00=0,XJZF00=0,QTZF00=0 where BRID00=LS_BRID00 and ID0000 = ad_NEWID0 and GZHCID>0 and nvl(SFFSHC,'1')='1' and nvl(HCDBXM,'0')='0'; end if; end if; --项目数量*单价不等于总金额重新算单价 update SF_FYXX00_TEMPMX set XMDJ00= round(XMJE00/XMSL00,4) where round(XMSL00*XMDJ00,2)<>round(XMJE00,2) and nvl(XMSL00,0)<>0 and BRID00=LS_BRID00 and ID0000=ad_NEWID0; --把收费项目名称加(院外) update SF_FYXX00_TEMPMX set YBXMMC=substrb(trim(YBXMMC)||SF_SF_YWJZMC(SFXMID),1,100) where BRID00=LS_BRID00 and ID0000=ad_NEWID0 and CFBZ00='1'; --删除项目金额数据 MZSF-20190911-001 delete SF_FYXX00_TEMPMX where BRID00=LS_BRID00 and ID0000=ad_NEWID0 and nvl(XMJE00,0)=0; --新医保接口bkeh83(国家编码C码)是否转化为bke045(医保结算编码)第一位:0:不开启 1:门诊2:住院3:门诊和住院,第二位(1:项目2:药品3:项目和药品)默认值:00 if LS_SFXYB0='1' and substrb(LS_Change_bkeh83_bke045,1,1) in ('1','3') then --新医保接口处理 if substrb(LS_Change_bkeh83_bke045,2,1) in ('1') then --1:项目2:药品3:项目和药品 update SF_FYXX00_TEMPMX aa set aa.XMBH00=substrb(nvl(trim(aa.BKEH83),trim(aa.XMBH00)),1,50) where BRID00=LS_BRID00 and ID0000 = ad_NEWID0 and aa.FLAG00 in ('0') and aa.FLAG00 is not null; elsif substrb(LS_Change_bkeh83_bke045,2,1) in ('2') then --1:项目2:药品3:项目和药品 update SF_FYXX00_TEMPMX aa set aa.XMBH00=substrb(nvl(trim(aa.BKEH83),trim(aa.XMBH00)),1,50) where BRID00=LS_BRID00 and ID0000 = ad_NEWID0 and aa.FLAG00 not in ('0') and aa.FLAG00 is not null; elsif substrb(LS_Change_bkeh83_bke045,2,1) in ('3') then --1:项目2:药品3:项目和药品 update SF_FYXX00_TEMPMX aa set aa.XMBH00=substrb(nvl(trim(aa.BKEH83),trim(aa.XMBH00)),1,50) where BRID00=LS_BRID00 and ID0000 = ad_NEWID0 and aa.FLAG00 is not null; end if; end if; --新医保接口bke182(院内项目名称)是否转化为bke046(医保项目名称)第一位:0:不开启 1:门诊2:住院3:门诊和住院,第二位(1:项目2:药品3:项目和药品)默认值:00 if LS_SFXYB0='1' and substrb(LS_Change_bke182_bke046,1,1) in ('1','3') then --新医保接口处理 if substrb(LS_Change_bke182_bke046,2,1) in ('1') then --1:项目2:药品3:项目和药品 update SF_YBFSMX aa set aa.XMMC00=substrb(nvl(trim(aa.XMMC00),trim(aa.XMMC00)),1,100) where BRID00=LS_BRID00 and ID0000 = ad_NEWID0 and aa.FLAG00 in ('0') and aa.FLAG00 is not null; elsif substrb(LS_Change_bke182_bke046,2,1) in ('2') then --1:项目2:药品3:项目和药品 update SF_YBFSMX aa set aa.XMMC00=substrb(nvl(trim(aa.XMMC00),trim(aa.XMMC00)),1,100) where BRID00=LS_BRID00 and ID0000 = ad_NEWID0 and aa.FLAG00 not in ('0') and aa.FLAG00 is not null; elsif substrb(LS_Change_bke182_bke046,2,1) in ('3') then --1:项目2:药品3:项目和药品 update SF_YBFSMX aa set aa.XMMC00=substrb(nvl(trim(aa.XMMC00),trim(aa.XMMC00)),1,100) where BRID00=LS_BRID00 and ID0000 = ad_NEWID0 and aa.FLAG00 is not null; end if; end if; --commit; exception when no_data_found then as_YHMSG0:=substrb('执行SP_SF_FYXX00_TEMP00失败!错误位置:'||LS_MsgStr||' 错误原因:'||sqlerrm,1,250); as_SYSMSG:=substrb('执行存储过程SP_SF_FYXX00_TEMP00失败!错误原因:'||sqlerrm,1,250); rollback; when OTHERS then as_YHMSG0:=substrb('执行SP_SF_FYXX00_TEMP00失败!错误位置:'||LS_MsgStr||' 错误原因:'||sqlerrm,1,250); as_SYSMSG:=substrb('执行SP_SF_FYXX00_TEMP00失败!错误原因:'||sqlerrm,1,250); rollback; end; / show error; --%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%